2011-04-26 47 views

回答

11

在Rails 3,你現在可以這樣做:

範圍條件

如果你正在尋找一個範圍內的表 (例如,用戶創建 ),您可以使用 條件選項加上 IN SQL語句。如果你有 兩個日期從控制器 你可以爲一個範圍做這樣的事情來 看進來:

Client.where(:created_at => (params[:start_date].to_date)..(params[:end_date].to_date)) 

所以你的情況這將是:

Event.where(:start_at => (Time.zone.now)..(Time.zone.now.end_of_day)) 

剛測試,並且它也可以在Time.zone.nowTime.zone.now.end_of_day左右沒有括號的情況下工作。

(從Rails Guides

+0

我有一個start_date事件爲2011-05-14 08:06:00 -0500但是'Event.where(:start_at =>'2011-05-14 08:00:00 -0500'..'2011-05 -14 08:10:00 -0500')'返回一個空數組。 – ed1t 2011-04-30 13:15:07

+0

如果使用日期對象而不是字符串,也許它可以工作:'Event.where(:start_at =>'2011-05-14 08:00:00'.to_date ..'2011-05-14 08:10: 00'.to_date)'。如果這沒有幫助,請發佈生成的SQL。 – Mischa 2011-04-30 14:26:57

3
Event.where('start_at >= ? and start_at <= ?', Time.zone.now, Time.zone.now.end_of_day) 

,如果你想這是爲多個用戶完全準確,您將不得不面對用戶時區。

+0

+1有關時區的備註。 – Mischa 2011-04-26 14:23:14

0
Event.where("start_at BETWEEN ? AND ?", Time.zone.now, Time.zone.now.end_of_day)