範囲型の使い方
始まりと終わりを 1 つの値で持つ
書き方
daterange('2026-01-01', '2026-01-05')([) は始まりを含み終わりを含まない)
範囲 && 範囲(重なる) 範囲 @> 値(含む)
lower(範囲) upper(範囲)
EXCLUDE USING gist (列 WITH &&)日付や数の範囲を 1 つの列で持てます。&& で重なり、@> で含むかを調べます。EXCLUDE 制約を付けると、重なる範囲を入れようとしたときにエラーになります(予約のダブルブッキングを防ぐ)。
例
SELECT * FROM bookings WHERE stay && daterange('2026-08-10', '2026-08-12');実際に打って練習する
PostgreSQL コースの Lv22「始まりと終わり 範囲型」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜2 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。