PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Rails не конвертира часова зона (PostgreSQL)

Вашата база данни съхранява вашите времеви марки в UTC (както трябва). ActiveRecord прави корекции на часовата зона, когато знае, че има клеймо за време; така че, когато кажете това:

puts Activity.first.starting_at

AR знае това starting_at е клеймо за време, така че инстанцира клеймото за време като ActiveSupport::TimeWithZone екземпляр и този клас прилага корекцията на часовата зона. Но когато кажете това:

select("date_trunc('day', activities.starting_at) as date ...

AR няма да анализира SQL, за да разбере, че date_trunc ще върне клеймо за време, AR дори не знае какво е date_trunc означава. AR просто ще види низ, излизащ от базата данни, и ще ви го предаде без интерпретация. Вие сте свободни да подадете този низ към ActiveSupport::TimeWithZone (или любимия ви клас за обработка на времето) себе си:няма нищо лошо в това да кажете на AR неща, които той не знае и не може да знае сам.

Rails е умен, но не е магия.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grib2 към PostGIS растер - някой разбира ли това да работи?

  2. Django с Postgresql, колоната трябва да се появи в клаузата GROUP BY или да се използва в обобщена функция

  3. Съхраняването на json, jsonb, hstore, xml, enum, ipaddr и т.н. е неуспешно с колона x е от тип json, но изразът е от тип символ, различен

  4. Добавяне на име на таблица към всяка колона в набор от резултати в SQL? (По-специално Postgres)

  5. Postgresql - Как да извлека първото появяване на подниз в низ, използвайки модел на регулярен израз?