PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Milisekundowa rozdzielczość DateTime w Ruby

ActiveRecord powinien zachować pełną precyzję z bazy danych, po prostu nie patrzysz na nią właściwie. Użyj strftime i %N format, aby zobaczyć ułamki sekund. Na przykład psql mówi to:

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

a ActiveRecord mówi tak:

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

Więc wszystko tam jest, musisz tylko wiedzieć, jak to zobaczyć.

Pamiętaj też, że ActiveRecord prawdopodobnie zapewni Ci ActiveSupport::TimeWithZone obiekty zamiast DateTime obiekty, ale DateTime zachowuje wszystko:

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

Spójrz na connection_adapters/column.rb w źródle ActiveRecord i sprawdź, co string_to_time metoda robi. Twój ciąg spadnie poniżej fallback_string_to_time ścieżka i to zachowuje ułamki sekund tak blisko, jak mogę to powiedzieć. Coś dziwnego może dziać się gdzie indziej, nie byłbym zaskoczony, biorąc pod uwagę dziwne rzeczy, które widziałem w źródle Rails, zwłaszcza po stronie bazy danych. Spróbowałbym przekonwertować ciągi na obiekty ręcznie, aby ActiveRecord trzymał je z daleka.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zezwolić na zdalny dostęp do bazy danych PostgreSQL

  2. psql nieprawidłowe polecenie \N podczas przywracania sql

  3. BŁĄD:ciąg w niekończonym cudzysłowie w miejscu lub w pobliżu

  4. Postgres:polecenie odkurzania nie czyści martwych krotek

  5. Jaki jest odpowiednik LITAGG (bazy danych Oracle) w PostgreSQL?