Mysql日期和rails日期与utc

时间:2012-04-05 13:21:49

标签: mysql ruby-on-rails ruby activerecord

我们希望得到所有在某个日期出生的人。目前我们使用这样的查询:

User.where(["day(birthdate) = day(?) AND month(birtdate) = month(?)", Time.now.utc, Time.now.utc ])

现在,当我们在表单中保护日期为29/03/1989的用户时,db中的字段birthdate包含:28/03/1989 22:00:00 UTC + 2

问题是当我们使用mysql的day()函数时,mysql将占用28而不是29。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您使用哪种MySQL数据类型来存储生日属性?通过选择数据类型date而不是datetime,仅存储日期(而不是时间)可能会有所帮助。

答案 1 :(得分:1)

也许在environment.rb(Rails 2.x)或application.rb(Rails 3.x)中设置正确的时区是有帮助的,例如config.time_zone =“Europe / Berlin”? Active Record应自动将时间转换为此区域。