我有一個後臺工作,每天晚上在UTC的午夜運行。我需要爲活動記錄模型獲取所有新記錄,其中updated_at> =上一個午夜(UTC)和當天午夜UTC。如何爲活動記錄指定日期範圍?
這樣做的最好方法是什麼?
,所以我需要的東西,如:
MyRecord.where(updated_at: prior_utc_midnight..tonight_utc_midnight)
但我不能確定如何纏鬥Time
/Date
和DateTime
類來完成我想要什麼。
謝謝!
我有一個後臺工作,每天晚上在UTC的午夜運行。我需要爲活動記錄模型獲取所有新記錄,其中updated_at> =上一個午夜(UTC)和當天午夜UTC。如何爲活動記錄指定日期範圍?
這樣做的最好方法是什麼?
,所以我需要的東西,如:
MyRecord.where(updated_at: prior_utc_midnight..tonight_utc_midnight)
但我不能確定如何纏鬥Time
/Date
和DateTime
類來完成我想要什麼。
謝謝!
MyRecord.where("updated_at >= '#{Date.today}' and updated_at < '#{Date.today.next_day}'")
唯一要考慮的是表中數據的時區。如果這也是UTC,那麼這個查詢應該給你你所要求的結果。
您可以使用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))
不幸的是你必須做類型轉換。這真的是唯一可以幫助的事情。 :( – Maxcell
推薦的東西像where(「updated_at> =#{formatted_prior_utc_midnight}和updated_at <#{formatted_tonight_utc_midnight}」) – abstractx1
@ abstractx1我的問題是更多如何在日期和時間類中爭吵以獲得午夜的前一天utc,並今天午夜獲得utc – horseyguy