我试图选择SQLite数据库中的所有记录在日后有日期。rails3 sqlite日期比较返回空集
Record.where('scheduled_date > ?', Time.now)
在我的电脑上,这当前返回一个空数组。
不过,如果我使用以下命令:
Record.all.map { |record| record if record.scheduled_date > Time.now }
我收到的所有记录与将来的日期的数组。
此外,我的同事在他的机器上运行相同的Rails项目能够使用ActiveRecord查询成功返回预期的结果数组。在最近取消对项目的更改后,此查询未能为他工作,他的计算机的行为与我的相似。
我怀疑在这个Rails项目中SQLite(v.1.3.6)或Rails3(v.3.2.3)可能会造成环境灾难,并且不知道在哪里寻找。任何想法可能会造成这种情况?
这可能是一个UTC问题。当您通过Ruby Record.all.map加载时,记录日期已经转换为UTC。但在Time.now的where子句中是当地时间。如果你使用Time.now.iso8601,你会得到什么? – peterept 2012-07-14 10:37:41
谢谢peterept,Time.now.iso8601解决了这个问题! – 2012-07-16 15:07:15