我的数据库中有以下条目:
t.time :my_time_stamp
在我的控制器中,我这样更新:
model.update_attributes(:my_time_stamp => Time.now.utc)
我可以看到我在写:
Mon 9 November, 8:54.54 UTC 2009
然而,当我后来读到这个值时,我得到了:
Sat Jan 01 08:54:54 UTC 2000
似乎时间部分已存储但未存储日期部分。我希望这是因为它是一个时间字段,但为什么我最终存储和检索日期?我想我必须误解这是如何以某种基本方式起作用的......我做错了什么?
我需要做的是计算自更新到数据库以来的秒数...是否有更简单的方法可以做到这一点?
谢谢!
答案 0 :(得分:5)
“时间”字段仅存储时间。不是约会对象 因此,您只能获得有效时间而非有效日期是合乎逻辑的。
如果您希望在数据库中存储日期和时间,则应进行以下迁移:
t.datetime :my_time_stamp
答案 1 :(得分:3)
Ruby没有无日期时间对象,因此它会将数据库中的无日历时间字段转换为某个任意日期的时间。 Ruby的Time对象编码自unix时代以来的秒数,因此它们包含日期。将它们存储在数据库中的正确方法是使用日期时间字段,或者如果您愿意,可以使用整数字段并存储Time.now.to_i
。