如何使用postgres在rails中找到在某一天(今天不是!)创建的记录

时间:2013-11-09 02:03:20

标签: ruby-on-rails postgresql

如何查找在特定日期创建的所有记录(与今天或昨天等无关)。

以下是其中的格式:     IRB(主):016:0> SourceNode.first.created_at

我想找到那些在2013年7月1日创建的那些:

=> Fri, 12 Jul 2013 01:15:48 UTC +00:00
irb(main):017:0> SourceNode.where("created_at = '2013-07-01'").count
=> 0

3 个答案:

答案 0 :(得分:4)

如果它始终是特定日期,您可以截断日期进行比较。

SourceNode.where("date_trunc('day', created_at) = '2013-07-01'").count

来源:Postgres的优秀date/time documentation

答案 1 :(得分:1)

据我所知,“created_at”是一个日期时间属性,因此它不会仅等于日期。我认为你可以做的是比较值是在日期之前的1秒和之后的1秒之间:

SourceNode.where("created_at > '2013-01-06 23:59:59' AND created_at < '2013-01-08 00:00:00'")

也许有更好的方法,但这在这里有用。

答案 2 :(得分:0)

试试这个,应该有效

SourceNode.where(:created_at => DateTime.parse("2013-10-31").beginning_of_day..DateTime.parse("2013-10-31").end_of_day)