【问题标题】:Search between dates with a variable interval w/ rails在具有可变间隔 w/rails 的日期之间搜索
【发布时间】:2012-12-11 00:44:35
【问题描述】:

我想知道如何通过数据库查询而不是查找所有站点来处理这个问题。

Site.all.select { |x| x.last_ran <= DateTime.now - x.interval.minutes }

基本上,我需要找到所有在其间隔之前 last_ran 的站点。因此,如果我在 12:00 和 12:06 运行我的站点,但间隔为 5 分钟,则此查询将返回它。

我遇到的问题是在数据库级别转换 x.interval.minutes (5.minutes)。

谢谢 - 如果有特定于数据库的方法来执行此操作,我也会使用 postgres!

【问题讨论】:

  • 我强烈建议添加 NextRunDueBy 字段。这样的字段将允许您使用索引来完成此查询。目前每一行都需要次解析。

标签: ruby-on-rails database postgresql datetime


【解决方案1】:

在 postgres 中这会起作用...

Site.where(
  "sites.last_ran <= CURRENT_TIMESTAMP - sites.interval * INTERVAL '1 second'"
)

我认为您可以使用NOW()CURRENT_TIMESTAMP

【讨论】:

  • 区间为整数。有更好的数据类型吗?
  • 一个整数表示什么?如果interval 本身已经是一个整数,x.interval.minutes 如何工作?
  • rails 在整数类型上添加分钟方法,因此我可以执行 DateTime.now - 5.minutes 或 (x.interval.minutes)。
猜你喜欢
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 2015-07-01
相关资源
最近更新 更多