首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ActiveRecord中奇怪的时间存储行为

ActiveRecord中奇怪的时间存储行为
EN

Stack Overflow用户
提问于 2009-11-09 17:03:55
回答 2查看 871关注 0票数 1

我的数据库中有以下条目:

代码语言:javascript
运行
复制
t.time :my_time_stamp

在我的控制器中,我像这样更新它:

代码语言:javascript
运行
复制
model.update_attributes(:my_time_stamp => Time.now.utc)

我可以看到我正在写:

代码语言:javascript
运行
复制
Mon 9 November, 8:54.54 UTC 2009 

然而,当我稍后阅读这个值时,我得到了:

代码语言:javascript
运行
复制
Sat Jan 01 08:54:54 UTC 2000

似乎已经存储了时间部分,但没有存储日期部分。我希望如此,因为它是一个时间字段,但是为什么我最终要存储和检索日期呢?我想我一定是在某种根本上误解了它的工作原理……我做错了什么?

我需要做的是计算自数据库更新以来的时间。有没有更简单的方法来做这件事?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-10 02:09:12

Ruby没有无日期的time对象,因此它将数据库中的无日期的时间字段转换为某个任意日期的时间。Ruby的Time对象编码了自unix时代以来的秒数,因此它们包含日期。将它们存储在数据库中的正确方法是使用datetime字段,或者如果您愿意,也可以使用整数字段并存储Time.now.to_i

票数 3
EN

Stack Overflow用户

发布于 2009-11-09 17:14:08

" time“字段仅存储时间。不是日期。

所以逻辑上你只能得到一个有效的时间,而不是一个有效的日期。

如果您希望将日期和时间存储在数据库中,则应进行以下迁移:

代码语言:javascript
运行
复制
t.datetime :my_time_stamp
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1699872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档