PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Resolusi milidetik dari DateTime di Ruby

ActiveRecord harus mempertahankan presisi penuh dari database, Anda hanya tidak melihatnya dengan benar. Gunakan strftime dan %N format untuk melihat pecahan detik. Misalnya, psql mengatakan ini:

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

dan ActiveRecord mengatakan ini:

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

Jadi semuanya ada di sana, Anda hanya perlu tahu cara melihatnya.

Perhatikan juga bahwa ActiveRecord mungkin akan memberi Anda ActiveSupport::TimeWithZone objek daripada DateTime objek tetapi DateTime mempertahankan semuanya juga:

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

Lihat connection_adapters/column.rb di sumber ActiveRecord dan periksa apa string_to_time metode tidak. String Anda akan turun fallback_string_to_time path dan itu mempertahankan pecahan detik sedekat yang saya tahu. Sesuatu yang aneh bisa terjadi di tempat lain, saya tidak akan terkejut mengingat hal-hal aneh yang saya lihat di sumber Rails, terutama sisi database. Saya akan mencoba mengonversi string menjadi objek dengan tangan sehingga ActiveRecord akan menjauhkannya dari mereka.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat dan menghapus database dan tabel di PostgreSQL

  2. INSERT COMMAND ::ERROR:nilai kolom tidak ada

  3. Optimalisasi kueri Postgres (memaksa pemindaian indeks)

  4. buka bungkus array postgresql menjadi baris

  5. Mustahil untuk Menginstal permata PG di mac saya dengan Mavericks