ruby-on-rails - Active Record - 如何按日期时间的差异排序(即按最接近给定日期时间的顺序排序)?
问题描述
假设我想找到一个与给定日期时间最接近的 created_at 模型,在某些限制内(例如,在 14 天内)。
dt = some_datetime_in_the_past
query = Model.where("created_at >= ? AND created_at <= ?", dt - 7.days, dt + 7.days)
这将获得在 7 天内创建的所有模型dt
。然后我想找到最接近 dt 的模型。所以是这样的:
query.order("created_at - #{dt}")
显然这不起作用,否则我不会在这里,但我想实现这样的目标。显然 created_at 的常规订单不起作用,因为它只会找到最接近/最远的现在,而不是给 given dt
。
解决方案
created_at
尝试使用and的绝对值dt
:
.order("abs(created_at - #{dt})")
推荐阅读
- python - 重新运行单元格时,Jupiter notebook 中的 BackTrader 图表消失
- ios - 如何在颤动中获取捆绑包ID
- mysql - 如何只带一个字段重复但另一个字段在一个范围内变化的行?
- asp.net - log4net 在类库中不起作用
- python - 如何改进代码并减少代码数量?
- php - PHP 致命错误:未捕获的 Unirest\Exception:错误的 URL
- javascript - 将“xxx\n”写入文件,但“\n”与操作系统兼容
- launch - 启动应用程序窗口时出错
- javascript - 如何在 JavaScript 中添加和删除事件监听器
- android - Places Api 在 android 中停止工作