6

UTCの深夜(dbのデフォルト)から現在までに作成されたすべてのレコードをキャプチャするcreated_atクエリ範囲を作成しようとしています。過去には、次の方法で時間範囲をクエリできました。

created_at => (24.hours.ago..Time.now)

ただし、新しいユースケースに合わせて上記を調整しても機能しません。

created_at => (Date.today..Time.now)

created_at範囲を更新して、今日/過去24時間以内にすべてのレコードにする方法に関する提案はありますか?

ありがとう

4

5 に答える 5

12
created_at => (DateTime.now.at_beginning_of_day.utc..Time.now.utc)
于 2012-04-06T17:22:18.487 に答える
2

以下の行も試すことができると思います。

ModelName.all :condition => ["DATE(created_at) = DATE(?)", Time.now]

またはInRails3

Model.where "DATE(created_at) = DATE(?)", Time.now

乾杯!

于 2013-04-10T13:10:02.353 に答える
2

タイムゾーンを考慮すべきだと思います。

where(:created_at => Time.zone.now.beginning_of_day.utc..Time.zone.now.end_of_day.utc)

また、Railsは時刻をUTC時刻に自動的に変更するため、以下も問題ありません。

where(:created_at => Time.now.beginning_of_day..Time.now.end_of_day)

于 2013-05-19T06:15:55.050 に答える
1

Rails5.1以降Date#all_day、を返す新しいメソッドが導入されましたa range of a day

それ以外の:

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

エレガントな方法は次のとおりです。

where(created_at: Date.today.all_day)
于 2020-04-14T09:08:32.027 に答える
0
Date.today.beginning_of_day.utc..Date.today.end_of_day.utc
于 2012-04-06T17:21:20.397 に答える