Activerecord 查找最接近当前日期创建的记录

Activerecord 查找最接近当前日期创建的记录,activerecord,ruby-on-rails-3.2,Activerecord,Ruby On Rails 3.2,我想获取在最接近当前日期的日期创建了的记录。如何使用活动记录“where子句”您可以通过以下内容找到过去最接近的记录: Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1) 然后比较哪个最接近当前日期 可能有一个解决方案可以通过一个请求来实现,但我找不到如何实现(如果您使用的是SQL server,则有一个方法DATEDIFF可以提供帮助) 更新:感谢米沙 如果您确定在创建的所有都

我想获取在最接近当前日期的日期创建了
的记录。如何使用活动记录“
where
子句”您可以通过以下内容找到过去最接近的记录:

Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1)
然后比较哪个最接近当前日期

可能有一个解决方案可以通过一个请求来实现,但我找不到如何实现(如果您使用的是SQL server,则有一个方法DATEDIFF可以提供帮助)

更新:感谢米沙

如果您确定在
创建的所有都是过去的,那么您将查找最后创建的记录,该记录可以被写入

Record.order("created_at").last
更新

要获取在同一日期创建的所有记录,请执行以下操作:

last_record_date = Record.max(:created_at)
Record.where(:created_at => (last_record_date.at_beginning_of_day)..(last_record_date.end_of_day))

理论上,将来可以创建一个
日期
,但如果使用Rails的自动时间戳,就不会发生这种情况。因此,您可以省略
where
子句。使用
order\u by(“created\u at DESC”)
应该足够了。@misha你说得太对了!我写这个答案时认为它可能是任何日期,当我再次阅读这个问题时,我改为
created\u at
,没有想到它简化了解决方案。谢谢。谢谢鲍德里克。我想得到最接近今天日期的记录,不是对它们进行排序,而是对它们进行过滤。因此,一些类似于MIN(Date(created_at)-Date.today的东西。知道我的意思吗?@chell我已经更新了我的答案,所有的记录都是在同一个日期创建的,而不是上一个记录。谢谢,这看起来正是我需要的。我接受了你的回答,并补充了一点。再次感谢。
last_record_date = Record.max(:created_at)
Record.where(:created_at => (last_record_date.at_beginning_of_day)..(last_record_date.end_of_day))