2012-11-07 57 views
0

也許愚蠢的問題,但它現在讓我瘋狂。 爲什麼Rails,ActiveRecord和日期

User.where(:created_at => 1.day.ago..Time.now).count 
    (0.8ms) SELECT COUNT(*) FROM "users" WHERE ("users"."created_at" BETWEEN '2012-11-06 17:58:22.443552' AND '2012-11-07 17:58:22.443809') 
=> 2 

而且

User.where(:created_at => 1.day.ago.to_date..Time.now.to_date).count 
    (0.6ms) SELECT COUNT(*) FROM "users" WHERE ("users"."created_at" BETWEEN '2012-11-06' AND '2012-11-07') 
=> 0 

給我不同的結果?

我知道,沒有時間(與.to_date所以)它應該在一天的開始和結束時間午夜。這是我想要的,但出於一些模糊的原因,它顯示我0,但我創建了2個用戶,如10分鐘前...

回答

1

以下答案可能對您有所幫助。 MySQL "between" clause not inclusive?

具體到你的問題,我在這裏複製和從上面的鏈接改寫答案:

的問題是,真的2011-01-31 2012-11-07是00:00 :00。那就是 一天的開始。不包括白天的一切。

因此,您在10分鐘前添加的條目顯然會在您未添加時間時跳過。

+0

謝謝你,現在我使用Time.now.beginning_of_day等等,但沒有將它轉換爲日期:)所以我的結果是準確的。 – Dimillian

相關問題