繁体   English   中英

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

[英]How to specify a date range for active record?

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

做这个的最好方式是什么?

所以我需要这样的东西:

MyRecord.where(updated_at: prior_utc_midnight..tonight_utc_midnight)

但是我不确定如何纠缠Time / DateDateTime Time类做我想要的。

谢谢!

您可以使用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')

另外,看看这些方法

有点奇怪,但是我认为这可行:

MyRecord.where("created_at > ? AND created_at < ?", Date.today.to_datetime.new_offset(0) - 1.day, Date.today.to_datetime.new_offset(0))
MyRecord.where("updated_at >= '#{Date.today}' and updated_at < '#{Date.today.next_day}'")

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM