我需要在30分钟前从Time.now
获取记录。我正在使用一个cron,我想要一次点燃cron。
我基本上需要这个,除非它应该忽略秒,这样如果Time.now == Wed, 31 Jan 2018 18:00:31 +0000
那么created_at = "Wed, 31 Jan 2018 17:30:23 +0000
的记录应该匹配。
这是我到目前为止的查询,由于时间评估不当而无效。
Cart.joins(:cart_addresses).group('carts.id').where(created_at: Time.now - 30.minutes).each do |i|
puts i.id
end
答案 0 :(得分:2)
请尝试以下查询:
# if current time is 3:00:03
# it will return carts created at 2:30:00 -> 2:30:59
from_mins_ago = 30.minutes.ago.change(sec: 0)
to_mins_ago = from_mins_ago.change(sec: 59)
Cart.joins(:cart_addresses).group('carts.id').where(created_at: from_mins_ago..to_min_ago).pluck('carts.id')
答案 1 :(得分:0)
您可以使用范围。
Cart.joins(:cart_addresses).group('carts.id').where(created_at: 30.minutes.ago..DateTime.now)
有很多解决方案。