たまにこんな場面に出くわす。
テーブルのカラムとして
from_date(開始日)
to_date(終了日)
を保持しており、画面からも
開始日
終了日
がわたってくる。
これらの範囲日付同士が、一日でも重複している場合はエラーとする。
意外とこれってチェックとしては面倒な部類で、
毎回紙にタイムラインの図を書いて、
う-ん
ってパターンを洗い出して条件を組んでいる気がした。
メモしとかなきゃまたいつ悩むハメになるか分からんのでメモ
select * from テーブル where (画面からのfrom日付 <= from_date and from_date <= 画面からのto日付) or (画面からのfrom日付 <= to_date and to_date <= 画面からのto日付) or (from_date <= 画面からのfrom日付 and 画面からのto日付 <= to_date)
Comments are closed.