2015-03-03 4 views
0

Я хочу получить все записи из базы данных, которые являются create_at сегодня. Но когда я делаюПолучить все записи, созданные сегодня в Rails

Model.where('DATE(created_at) = ?',Date.today) 

он возвращает только последнюю запись, созданную сегодня. У меня 3 записи с created_at

2015-03-03 11:38:31 
2015-03-03 11:59:00 
2015-03-03 11:33:04 

. Но он возвращает только запись с «Дата создания».

Также передано How to delete all records created today?, Getting all rows created today. Я хочу знать, почему это происходит? также попытался

Model.where("DATE(created_at) = ?",Date.today) 

и

Tracking::TrackingLogin.where("created_at >= ?", Time.zone.now.beginning_of_day) 

Пожалуйста, кто-нибудь объяснить, что происходит в моем коде?

+2

'Model.where ("? Created_at> =", Time.zone.now.beginning_of_day)' – Sontya

+0

, если вы используете '' mysql' Model.where («DATE (created_at) =?», Date.today) 'это также должно работать – Sontya

+0

Можете ли вы рассказать нам, какую базу данных вы используете? – Sontya

ответ

4

Попробуйте следующее:

Model.where("created_at >= ?", Time.zone.now.beginning_of_day) 
-1
Model.where("created_at >= ?", Date.today) 
+0

Это также возвращает только первую запись. Не все записи. – Suganya

+0

@Suganya Это странно, http://snag.gy/qpCu1.jpg -> мой результат теста. – yms9654

+0

это не правильно. Date.today приходит без информации о часовом поясе, sql-план будет выглядеть как>> SELECT «режимы». * FROM «режимы» WHERE «режимы». «Is_deleted» = 'f' AND (created_at> = '2016-05-17') который запрашивается UTC сегодня. – catsky