Rails: イベント開始/終了日時のクエリー
目的
イベント開始日時の1時間後など日時クエリーの覚書を残します。
環境
macOS 10.15.6
Ruby 2.7.1
Rails 6.0.3.2
対象のモデル
bin/rails g model Event start_at:datetime end_at:datetime
以後
開始日時の1時間前以後(開始1時間前を経過)
Event.where('start_at <= ?', Time.zone.now + 1.hour)
終了日時の3時間後以後(終了3時間後を経過)
Event.where('end_at <= ?', Time.zone.now - 3.hours)
終了日時の翌日の1時以後(終了翌日の1時以後を経過)
※下記の例は終了日時が午前1時以前に設定されないことが前提
Event.where('end_at < ?', Time.zone.now.beginning_of_day + 1.hour)
期間
イベントが本日中(開始日時が本日中)
Event.where(start_at: Time.zone.now.all_day)
開始の1時間前から開始30分後までの間
Event.where('start_at <= ?', Time.zone.now + 1.hour)
.where('start_at >= ?', Time.zone.now - 30.minutes)
イベント終了後の当日の22時から24時までの間
base_datetime = Time.zone.now
Event.where(start_at: base_datetime.all_day)
.where('end_at <= ?', base_datetime)
.where('? <= ?', base_datetime.beginning_of_day + 22.hours, base_datetime)
以上です。
この記事が気に入ったらサポートをしてみませんか?