我正在尝试通过类型为TimeSlot
的字段start_date查询datetime
表中的记录。这是我到目前为止尝试失败的原因:
TimeSlot.where(:start_date => DateTime.new(2010, 9, 1))
TimeSlot.where(:start_date => DateTime.new(2010, 9, 1).to_s)
TimeSlot.where(:start_date => "2010-09-08")
TimeSlot.where(:start_date => "2010-09-08 00:00:00")
我很感激任何帮助。
答案 0 :(得分:1)
您的查询对我来说很好。
您确定数据库中有匹配的行吗?
要进行调试,请查看logs / development.log文件。
添加了:
问题可能是时区。您的查询正在使用服务器的时区。您的数据可以存储在不同的时区。
答案 1 :(得分:0)
我认为这也是一个时区的事情。数据库中的所有内容都由rails自动转换为UTC。如果没有偏移,查询1和4应该有效。
答案 2 :(得分:0)
来自rubyonrails.org的回答
Client.where(" created_at> =:start_date AND created_at< =:end_date", {:start_date => params [:start_date],:end_date => PARAMS [:END_DATE]})
或
Client.where(" created_at IN(?)", (PARAMS [:起始日期] .to_date)..(PARAMS [:END_DATE] .to_date))
如果你的start_date是一个日期字段,以下是我查询所有TimeSlot的所有内容#34; 2010-09-08&#34 ;.
TimeSlot.where("start_date >= ? AND start_date <= ?", "2010-09-08", "2010-09-08")
如果start_date是日期时间字段。
TimeSlot.where("start_date >= ? AND start_date <= ?", "2010-09-08", "2010-09-09")
因为日期时间从00:00:00开始