我们希望得到所有在某个日期出生的人。目前我们使用这样的查询:
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。
我该如何解决这个问题?
答案 0 :(得分:1)
您使用哪种MySQL数据类型来存储生日属性?通过选择数据类型date
而不是datetime
,仅存储日期(而不是时间)可能会有所帮助。
答案 1 :(得分:1)
也许在environment.rb(Rails 2.x)或application.rb(Rails 3.x)中设置正确的时区是有帮助的,例如config.time_zone =“Europe / Berlin”? Active Record应自动将时间转换为此区域。