2015-03-31 129 views
1

我遇到了通過在日期時間屬性中搜索找不到記錄的問題。 我有一個具有稱爲日期的日期時間屬性的飛行模型。從表單中我得到一個格式爲%d/%m/%Y的值,我繼續使用該信息執行查詢,但它總是返回空的ActiveRelation。按日期查找記錄[Rails 4]

有些事情我已經試過:

Flight.first.date == params[:date] 
#=> true 

Date.parse(params[:date]) == Flight.first.date 
#=>true 

Flight.where(date: params[:date]) 
    CACHE (0.0ms) SELECT "flights".* FROM "flights" WHERE "flights"."date" = ? [["date", "30/03/2015"]] 
#<ActiveRecord::Relation []> 
Flight.where(date: Date.parse(params[:date])) 
    CACHE (0.0ms) SELECT "flights".* FROM "flights" WHERE "flights"."date" = '2015-03-30' 
#<ActiveRecord::Relation []> 


#params[:date] is equal to "30/03/2015" 

First.flight.date #is equal to Mon, 30 Mar 2015 00:00:00 UTC +00:00 

任何幫助將真正理解。謝謝。

+1

您應該使用'日期.parse(PARAMS [:日期])'把它轉換成像你這樣有用的形式。你有'DATE'專欄嗎?仔細比較'DATE'和'DATETIME',因爲後者有一個小時+分鐘+秒的組成部分。 – tadman 2015-03-31 17:28:36

回答

0

試試這個

Flight.where(["date like ?", "%#{Date.parse(params[:date])}%"]) 

或者

Flight.where(["date like ?", "%#{params[:date].to_date}%"])