如何指定活动记录的日期范围?

时间:2017-02-24 00:48:05

标签: ruby-on-rails ruby activerecord rails-activerecord

我有一个后台工作,每天晚上在午夜运行。我需要获取活动记录模型的所有新记录,其中up​​dated_at是> =前一个午夜(UTC)和当天的午夜UTC。

这样做的最佳方式是什么?

所以我需要这样的东西:

let answer =
    getSomeIntegerValue ()
    |> addition1 12 // Add 12 to result

但我不确定如何纠缠MyRecord.where(updated_at: prior_utc_midnight..tonight_utc_midnight) / TimeDate类来做我想做的事。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用beginning_of_dayend_of_day方法。

这些助手会给你午夜时间

MyRecord.where(created_at: Date.today.beginning_of_day..Date.today.end_of_day)

#=> SELECT "my_records".* FROM "my_records" WHERE ("my_records"."created_at" BETWEEN '2017-02-24 00:00:00.000000' AND '2017-02-24 23:59:59.999999')

另外,看看这些方法

答案 1 :(得分:-1)

MyRecord.where("updated_at >= '#{Date.today}' and updated_at < '#{Date.today.next_day}'")

唯一要考虑的是表中数据的时区。如果那也是UTC,则此查询应该为您提供您要求的结果。