6

我想获取created_at日期最接近当前日期的记录。如何使用活动记录的where条款做到这一点?

4

1 回答 1

11

您可以通过以下方式找到过去最接近的记录:

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 可以提供帮助)。

更新感谢米莎

如果你确定一切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))
于 2012-09-06T07:12:04.973 回答