我試圖選擇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