【发布时间】:2010-11-18 08:45:21
【问题描述】:
Rails 可以自动在 MySql 中插入正确格式化的日期时间,而无需我多加考虑。
但是,为了进行验证,我需要检查存储的 mysql 日期时间值(即 2008-07-02 18:00:00)是否大于或小于“现在”。我可以打电话给DateTime.now 或Time.now 但是我怎样才能把它转换成mysql喜欢的格式呢?
谢谢
【问题讨论】:
标签: mysql ruby-on-rails ruby datetime
Rails 可以自动在 MySql 中插入正确格式化的日期时间,而无需我多加考虑。
但是,为了进行验证,我需要检查存储的 mysql 日期时间值(即 2008-07-02 18:00:00)是否大于或小于“现在”。我可以打电话给DateTime.now 或Time.now 但是我怎样才能把它转换成mysql喜欢的格式呢?
谢谢
【问题讨论】:
标签: mysql ruby-on-rails ruby datetime
您可以使用to_s(:db) 转换为数据库友好格式。
Time.now.to_s(:db)
但是,如果您在 Rails 中指定了时区,请小心,因为时间将以 UTC 格式存储在数据库中。您需要指定它才能进行正确的比较。
Time.now.utc.to_s(:db)
您也可以在 MySQL 中使用 NOW() 函数,而不是在 Ruby 中生成当前时间。
【讨论】:
你不需要。让 Rails 为您完成工作:
如果您的模型是Widget,这将找到在最后一天创建的所有小部件:
Thing.find(:all, :condition => ["created_at > ?", Time.now - 1.day])
Rails 会自动将时间戳转换为正确的格式。
【讨论】:
Thing.where('created_at > ?', 6.months.ago)