我有一个像2012-01-01T01:02:03.456
这样的字符串,我正在使用ActiveRecord存储在Postgres数据库的时间戳中.
不幸的是,Ruby似乎切断了毫秒:
ruby-1.9.3-rc1 :078 > '2012-12-31T01:01:01.232323+3'.to_datetime
=> Mon, 31 Dec 2012 01:01:01 +0300
Postgrs支持微秒分辨率.我怎样才能相应地保存时间戳?我需要至少毫秒的分辨率.
(PS是的,我可以在postgres中插入毫秒整数列;这有点违背了ActiveRecord的全部目的.)
UPDATE:
m.happened_at = '2012-01-01T00:00:00.32323'.to_datetime
m.save!
m.reload
m.happened_at.to_f
确实降低了毫秒数.
现在,有趣的是,在Rails和Postgres中,created_at
确实显示毫秒.但其他时间戳字段(如上面的happened_at
)则没有(也许Rails使用NOW()
函数表示created_at
,而不是传递日期时间).
Which leads to my ultimate question:
How can I get ActiveRecord to preserve millisecond resolution on timestamp fields?