我想获取created_at
日期最接近当前日期的记录。如何使用活动记录的where
条款做到这一点?
问问题
4555 次
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 回答