RubyやRailsのアプリで、先週から1週間分の差分データの抽出や、集計処理をすることがあります。
例えば、先週から新規登録されたデータ件数を調べるとか…
システム日付を、2019/01/08とした場合の例
- 今日: Time.zone.now.all_day
- 昨日:1.day.ago.all_day
- 1週間前:1.week.ago.all_day
- 1か月前:1.month.ago.all_day
- 1年前:1.year.ago.all_day
サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
pry(main)> Time.zone.now.all_day => Tue, 08 Jan 2019 00:00:00 JST +09:00..Tue, 08 Jan 2019 23:59:59 JST +09:00 pry(main)> 1.day.ago.all_day => Mon, 07 Jan 2019 00:00:00 JST +09:00..Mon, 07 Jan 2019 23:59:59 JST +09:00 pry(main)> 1.week.ago.all_day => Tue, 01 Jan 2019 00:00:00 JST +09:00..Tue, 01 Jan 2019 23:59:59 JST +09:00 pry(main)> 1.month.ago.all_day => Sat, 08 Dec 2018 00:00:00 JST +09:00..Sat, 08 Dec 2018 23:59:59 JST +09:00 pry(main)> 1.year.ago.all_day => Mon, 08 Jan 2018 00:00:00 JST +09:00..Mon, 08 Jan 2018 23:59:59 JST +09:00 |
beginning_of_dayを利用した場合
1週間前からの現在までに更新された条件
1 2 3 4 |
pry(main)> 1.week.ago.beginning_of_day..Time.zone.now.end_of_day => Tue, 01 Jan 2019 00:00:00 JST +09:00..Tue, 08 Jan 2019 23:59:59 JST +09:00 Hoge.where("updated_at": 1.week.ago.beginning_of_day..Time.zone.now.end_of_day) |