Mysql日期和具有utc的rails日期

Mysql日期和具有utc的rails日期,mysql,ruby-on-rails,ruby,activerecord,Mysql,Ruby On Rails,Ruby,Activerecord,我们想得到所有在某一天出生的人。目前,我们使用如下查询: User.where(["day(birthdate) = day(?) AND month(birtdate) = month(?)", Time.now.utc, Time.now.utc ]) 现在,当我们在表单中保护日期为1989年3月29日的用户时,数据库中的字段birthdate包含以下内容:28/03/1989 22:00:00 UTC+2 问题是,当我们使用mysql的day()函数时,mysql将把28作为一天,而不是

我们想得到所有在某一天出生的人。目前,我们使用如下查询:

User.where(["day(birthdate) = day(?) AND month(birtdate) = month(?)", Time.now.utc, Time.now.utc ])
现在,当我们在表单中保护日期为1989年3月29日的用户时,数据库中的字段birthdate包含以下内容:28/03/1989 22:00:00 UTC+2

问题是,当我们使用mysql的day()函数时,mysql将把28作为一天,而不是29


我怎样才能解决这个问题

您使用哪种MySQL数据类型来存储生日属性?选择数据类型
date
而不是
datetime

可能有助于只存储日期(而不是时间),例如在environment.rb(Rails 2.x)或application.rb(Rails 3.x)中设置正确的时区,例如config.time\u zone=“Europe/Berlin”?Active Record应该自动将时间转换为该区域。

的确如此,但是如果数据库中的日期是28/03/1989 22:00:00 UTC+2,那么mysql函数日(28/03/1989 22:00:00 UTC+2)将返回28,如果我们是28/03/1989 22:00 UTC+2,则activerecord日期(time.now)将返回29