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

che*_*ell 5 activerecord ruby-on-rails-3.2

我想获得created_at日期最接近当前日期的记录.如何使用活动记录where条款执行此操作?

Bal*_*ick 10

你可以找到过去最接近的记录,例如:

Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1)
Run Code Online (Sandbox Code Playgroud)

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

Record.where("created_at >= ?", Date.today).order_by("created_at ASC").limit(1)
Run Code Online (Sandbox Code Playgroud)

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

可能有一个解决方案,只需一个请求,但我找不到(如果你使用SQL服务器,有一个方法DATEDIFF可以帮助).

更新:感谢Mischa

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

Record.order("created_at").last
Run Code Online (Sandbox Code Playgroud)

更新

要创建所有记录的日期与最后一条记录相同:

last_record_date = Record.max(:created_at)
Record.where(:created_at => (last_record_date.at_beginning_of_day)..(last_record_date.end_of_day))
Run Code Online (Sandbox Code Playgroud)