2011-07-09 113 views
3

我的問題是當用戶選擇相同的日期,下面的查詢返回空數組。相反,當用戶選擇相同的日期時,它必須顯示在該日期創建的用戶。任何幫助將不勝感激。日期比較相同的日期

User.where("created_at >= ? and created_at =< ?", params[:from].to_date, params[:to].to_date) 
+0

您可以測試兩個日期是否相同。如果是,可以在0:00到23:59之間添加時間並獲得結果。如果您不想使用時間,則可以更改查詢(日期相同時)以查找日期大於昨天(日期-1)且小於明天(日期+1)的記錄。 – DOK

回答

1

您可能正在使用DATETIME數據庫列。問題在於用戶選擇「from」作爲(例如)2011-07-09,並且爲了比較,數據庫將其轉換爲「2011-07-09 00:00:00」,並且如果用戶選擇同一天兩次,可能沒有結果(除非它們是在「2011-07-09 00:00:00」創建的)。要解決這個問題,只需做

to_date = params[to].to_date + 1.day 

在進行實際的數據庫搜索調用之前。並使用TO_DATE代替則params的[:對] .to_date

+0

謝謝你,先生。我現在明白了。 – Zyn

+0

如果答案適合您,請將其標記爲正確答案。人們會欣賞它,並更願意在未來幫助你。 –

3

另一種方式來實現這一目標:

PARAMS [:從] .to_date.beginning_of_day ,而params [:對] .to_date.end_of_day。這將覆蓋全天