2010-08-24 93 views
4

我試圖通過類型爲datetime的字段start_date來查詢TimeSlot表中的記錄。這是我迄今嘗試過的失敗:Rails activerecord:通過日期時間字段查詢記錄?

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

你有沒有找到一個解決這個?我有完全相同的問題。 – bjork24 2011-02-10 19:11:51

+0

[Find Date with Datetime with match today's date - Ruby on Rails]的可能重複(http://stackoverflow.com/questions/5943872/find-records-with-datetime-that-match-todays-date-ruby-on -rails) – 2013-03-12 18:24:57

回答

1

您的詢問對我而言很好。

你確定在db中有一個匹配的行嗎?

要進行調試,請查看您的logs/development.log文件。

補充:

問題可能是時區。您的查詢使用您服務器的時區。您的數據可能存儲在不同的時區。

0

我敢打賭,這也是一個時區問題。數據庫中的所有內容都通過導軌自動轉換爲UTC。如果沒有偏移,查詢1和4應該可以工作。 「:start_date和created_at < =:END_DATE created_at> =」, {:START_DATE => PARAMS [:起始日期]

0

從訪問rubyonrails.org

Client.where(答案,:END_DATE => PARAMS [:END_DATE]})

Client.where( 「created_at IN(?)」, (PARAMS [:起始日期] .to_date)..(PARAMS [:end_d ate] .to_date))

這是我查詢所有TimeSlot開始於「2010-09-08」,如果你的start_date是一個日期字段。

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

相關問題