2013-08-01 46 views
1

任何人都可以請解釋我,爲什麼我的數據庫查詢返回空,當我有我的表中的數據?Rails的 - 正確的數據庫查詢返回空陣列

Event.all 

回報

... 
Event Load (0.3ms) SELECT "events".* FROM "events" 
=> #<ActiveRecord::Relation [#<Event id: 1, created_at: "2013-08-01 12:27:36", updated_at: "2013-08-01 12:27:36"> 
... 

等,

雖然

Event.where(created_at: Date.today) 

給我

Event Load (0.3ms) SELECT "events".* FROM "events" WHERE "events"."created_at" = '2013-08-01' 
=> #<ActiveRecord::Relation []> 

一切都在哪裏?

+1

您正在使用哪種DBM?通常,我們會將DateTime值截斷爲查詢中的一個日期以使其匹配。 –

回答

3

領域created_at是一個DateTime,但你是相對於一個日期(沒時間)。 您需要鑄造領域作爲一個日期拿到今天創建的所有活動:

Event.where('CAST(events.created_at as DATE) = ?', Date.today) 

注意:語法可能會因您的資料庫系統(PostgreSQL系統/ MySQL等)上的改變。

希望這會有所幫助!

有用的鏈接:

+0

非常感謝 –

0

如果你看看你的實際查詢 -

SELECT "events".* FROM "events" WHERE "events"."created_at" = '2013-08-01'

你正在尋找一個紀錄created_at等於2013-08-01,但在交流中tuality,您正在嘗試搜索的記錄 - created_at字段等於2013-08-01 12:27:36

更改您的發言做一個搜索created_at包含2013-08-01

0

的問題是,created_at:屬性(假設它是在遷移時間戳創建)也存儲時間。所以它永遠不會等於簡單的日期。你最好的選擇是解析日期,然後比較它。

相關問題