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

时间:2012-09-06 06:37:36

标签: activerecord ruby-on-rails-3.2

我想获得其created_at日期最接近当前日期的记录。如何使用活动记录“where子句?

执行此操作。”

1 个答案:

答案 0 :(得分:8)

您可以使用以下内容找到最接近的记录:

Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1)

同样,您可以在将来拥有最接近的记录

Record.where("created_at >= ?", Date.today).order_by("created_at ASC").limit(1)

然后比较哪一个最接近当前日期......

可能有一个解决方案可以使用单个请求执行此操作,但我无法找到(如果您使用的是SQL服务器,有一个方法DATEDIFF可以提供帮助)。

更新感谢Mischa

如果您确定所有created_at都在过去,那么您正在寻找最后创建的记录,可以写成

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))