我想获得其created_at
日期最接近当前日期的记录。如何使用活动记录“where
子句?
答案 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))