Ruby datetime适合mysql比较

use*_*154 38 ruby mysql datetime ruby-on-rails

Rails一直很好,可以在MySql中自动插入格式正确的日期时间,而无需我多考虑.

但是,为了进行验证,我需要检查存储的mysql日期时间值(即2008-07-02 18:00:00)是否大于或小于"now".我可以打电话DateTime.now,Time.now但我怎么能把它转换为mysql喜欢的格式?

谢谢

rya*_*anb 94

您可以使用to_s(:db)转换为数据库友好格式.

Time.now.to_s(:db)
Run Code Online (Sandbox Code Playgroud)

但是,如果在Rails中指定了时区,请小心,因为时间将以UTC格式存储在数据库中.您需要指定进行适当的比较.

Time.now.utc.to_s(:db)
Run Code Online (Sandbox Code Playgroud)

您还可以NOW()在MySQL中使用函数,而不是在Ruby中生成当前时间.

  • 谢谢.很棒的让railscasts家伙回答你的问题:) (15认同)

lev*_*lex 5

你不需要.让Rails为您完成工作:

如果您的模型是Widget这将找到在最后一天创建的所有小部件:

Thing.find(:all, :condition => ["created_at > ?", Time.now - 1.day])
Run Code Online (Sandbox Code Playgroud)

Rails会自动将时间戳转换为正确的格式.