【问题标题】:Activerecord find records by time in datetimeActiverecord 按日期时间查找记录
【发布时间】:2014-11-25 23:06:49
【问题描述】:

我正在尝试通过查看日期时间字段来执行按时间返回记录的活动记录查询。具体来说,我想获取在凌晨 1 点到 6 点之间创建的所有记录,而不关心它们是在哪一天创建的,只是确保时间在该范围内。

如果我有记录:

1: car=> "Honda", color: "blue", created_at => "2014-11-13 01:15:00"
2: car=> "Toyota", color: "red", created_at => "2014-11-17 04:15:00"
3: car=> "Honda", color: "red", created_at => "2014-11-20 10:15:00"

应该返回第一条和第二条记录。

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    要直接执行此操作,您需要使用一些供应商特定的 SQL。

    例如:

    • postgresql:Car.where('extract(hour from created_at) between 1 and 6')
    • mysql:Car.where('hour(created_at) between 1 and 6')

    但是,除非您可以对表达式进行索引,否则这在大表上不会很快。例如,如果您使用 MySQL,您可能希望将小时存储在单独的列中,以便您可以对其进行索引。那么条件也会简化为Car.where(created_hour: 1..6)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2022-01-06
      • 2012-10-24
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多