2014-10-01 51 views
0

我正在使用datetime,我想知道爲什麼我沒有從我正在做的查詢中得到任何結果。紅寶石凡查詢,不拾起任何對象

rails c

>> Performance.find(6) 
    Performance Load (0.4ms) SELECT "performances".* FROM "performances" WHERE 
    "performances"."id" = $1 LIMIT 1 [["id", 6]] 

我選擇了一個6號,因爲我知道日〜任意波形。這是它的反應。

 => #<Performance id: 6, show: "", choreographer: "", location: "", tickets: "", created_at: 
    "2014-10-01 06:43:41", updated_at: "2014-10-01 06:43:41", has_passed: nil, event: nil, date: 
    "2014-12-06 07:15:00"> 

注意結束日期。它是在格式

2014-12-06 {...} 

然而,當我試圖拉這個記錄了一個在那裏查詢

Performance.where(date: (Time.now.midnight + 10.year)..(Time.now.midnight - 10.year)) 

回報

Performance Load (0.7ms) SELECT "performances".* FROM "performances" 
    WHERE  
("performances"."date" BETWEEN '2024-10-01 04:00:00.000000' AND '2004-10-01 04:00:00.000000') 
    => #<ActiveRecord::Relation []> 

我並不感到驚訝,我做錯了什麼,但是我不明白這些形成過程如何相似。

我指的是BETWEEN X and Y,以及Performance.find(6)格式的格式。

我該如何更改查詢以確保我拿起第6條記錄?

感謝

+0

爲什麼查詢'Performance.where(date:...)'this:WHERE (「performance」。「created_at」...'?(注意:'date'與'created_at') – awendt 2014-10-01 08:13:03

+1

另外,它解決你的問題,當交換日期,即'(Time.now.midnight - 10.years)..(Time.now.midnight + 10.years)'? – awendt 2014-10-01 08:14:04

+0

@awendt我沒有交換它。當我發佈帖子時,嘿, – Peege151 2014-10-01 18:31:21

回答

2

你必須有左側最小的日期,因爲運營商之間的行爲是這樣的:

expr BETWEEN begin_exp AND end_expr 
// is the same as 
expr >= begin_exp AND expr <= end_expr 

沒有日期是「大於」比「2024-10 -01 04:00:00.000000'和'小於''2004-10-01 04:00:00.000000'。