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

Милисекунда разделителна способност на DateTime в Ruby

ActiveRecord трябва да запази пълната прецизност от базата данни, просто не я разглеждате правилно. Използвайте strftime и %N формат, за да видите частичните секунди. Например, psql казва това:

=> select created_at from models where id = 1;
         created_at         
----------------------------
 2012-02-07 07:36:20.949641
(1 row)

и ActiveRecord казва това:

> Model.find(1).created_at.strftime('%Y-%m-%d %H:%M:%S.%N')
 => "2012-02-07 07:36:20.949641000" 

Така че всичко е там, просто трябва да знаете как да го видите.

Също така имайте предвид, че ActiveRecord вероятно ще ви даде ActiveSupport::TimeWithZone обекти, а не DateTime обекти, но DateTime запазва и всичко:

> '2012-12-31T01:01:01.232323+3'.to_datetime.strftime('%Y-%m-%d %H:%M:%S.%N')
 => "2012-12-31 01:01:01.232323000" 

Разгледайте connection_adapters/column.rb в източника на ActiveRecord и проверете какво е string_to_time метод прави. Вашият низ ще отиде надолу fallback_string_to_time път и това запазва частични секунди толкова близо, колкото мога да кажа. Нещо странно може да се случва другаде, не бих се изненадал, като се имат предвид странните неща, които съм виждал в източника на Rails, особено в базата данни. Бих опитал да преобразувам низовете в обекти на ръка, така че ActiveRecord да държи ръцете си далеч от тях.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на настройка за репликация на PostgreSQL в Debian/Ubuntu

  2. Как да защитите своята PostgreSQL база данни - 10 съвета

  3. Как да нулирате последователността в postgres и да попълните колоната за идентификатор с нови данни?

  4. не може да създаде автоматично инкрементиращ първичен ключ с flask-sqlalchemy

  5. Конфигуриране на PostgreSQL за непрекъснатост на бизнеса