2015-04-20 101 views
3

我最初的想法是:查找記錄在10天前

user.humans.where("created_at = ?", 10.days.ago) 

雖然,這似乎是在尋找記錄創建10天前在準確的時間,當語句被稱作。我希望收集那天創建的記錄,而不管他們的時間。

有沒有人知道一個方便的方法來做到這一點?如果我需要詳細說明,請告訴我。

謝謝。

回答

6

你可能會想在這裏使用範圍,因爲我認爲這是一個日期時間列。

User.humans.where("? <= created_at AND created_at <= ?", 10.days.ago.beginning_of_day, 10.days.ago.end_of_day) 

你還需要確保你設置你的Rails應用程序的時區,這樣你明確瞭解您認爲哪些時間是10天。

+0

正是我在找什麼,謝謝喬希。 –

+0

如果你正在使用postgres,你可以使用''created_at BETWEEN?AND?「'。 – evanbikes

1

無論您使用的是哪種DBMS,都會有一種將日期時間轉換爲日期的方法。然後,你應該將它與Ruby中的日期進行比較。例如,如果你的DBMS是MySQL中,你可以說

user.humans.where("date(created_at) = ?", 10.days.ago.to_date) 

如果你不使用MySQL,那麼你應該能夠谷歌在您選擇的DBMS日期時間轉換爲日期。