[英]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
/ Date
和DateTime
Time
类做我想要的。
谢谢!
您可以使用beginning_of_day
和end_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.