2015-03-03 76 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 

。但是它只返回'2015-03-03 11:38:31'这个created_at日期的记录。

也被称为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 2015-03-03 12:08:49

+0

如果你正在使用''mysql' Model.where (“DATE(created_at)=?”,Date.today)'这也应该工作 – Sontya 2015-03-03 12:11:28

+0

您能告诉我们您正在使用哪个数据库吗? – Sontya 2015-03-03 12:27:22

回答

4

尝试以下操作:

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

这也只返回第一条记录。并非所有的记录。 – Suganya 2015-03-03 12:21:45

+0

@Suganya这很奇怪,http://snag.gy/qpCu1.jpg - >我的测试结果。 – yms9654 2015-03-05 05:22:59

+0

这是不对的。 Date.today没有时区信息,sql计划将看起来像=> SELECT“modes”。* FROM“modes”WHERE“modes”。“is_deleted”='f'AND(created_at> ='2016-05-17')这是今天UTC查询的。 – catsky 2016-05-17 03:53:17