众所周知 mysql 的存储的数据中时间是跟当时时间差八小时的,我们正常引用时是不会出问题的,但当你试图对时间进行日期化查询时需要进行相应的处理 如我要查询今日的记录 错误的写法:Model.where("date(created_at) = ?",Date.today) 正确的写法:Model.where("date(date_add(created_at,interval 8 hour)) = ?",Date.today) 一般来说你对数据库进行时间查询,rails 会自动帮你作出处理,但这个处理只对时间形式的比较有效,对日期格式的比较是无效的。 以上面的写法为例,我要查询今天 (2013-4-13)7 点创建的一条数据 那么上面的查询语句就会变为 错误的写法:Model.where("date('2013-4-12 23:00:00') = ?", '2013-4-13') >> Model.where("'2013-4-12'= ?", '2013-4-13') 正确的写法:Model.where("date(date_add('2013-4-12 23:00:00',interval 8 hour)) = ?",'2013-4-13') >> Model.where("date('2013-4-13 7:00:00') = ?",'2013-4-13') => Model.where("'2013-4-13'= ?", '2013-4-13') 综上所述,在对 mysql 进行日期查询时要作出相应的加 8 小时的处理