指定した時間が含まれるか
2009.07.27 Monday
既に登録されているデータと時間が重複していないか?
開発でよく書く条件です。
開始・終了が一致する時間だけでなく、
登録するデータと1時間でも重なっていたら、重複とするときは
以下のように条件を書けば、重複の有無を確認できます。
14:00〜20:00と時間が重複するデータを抽出する場合の例です。
select * from 対象テーブル
where (starttime = '14:00' and endtime ='20:00')
or (starttime < '14:00' and endtime > '14:00')
or (starttime < '20:00' and endtime > '20:00')
or ('14:00' < starttime and '20:00' > starttime)
or ('14:00' < endtime and '20:00' >endtime );
何度か開発で作成したことがある条件なのですが、
必要になるたびに一から考えているような気がするので
ここにメモしておきます。
開発でよく書く条件です。
開始・終了が一致する時間だけでなく、
登録するデータと1時間でも重なっていたら、重複とするときは
以下のように条件を書けば、重複の有無を確認できます。
14:00〜20:00と時間が重複するデータを抽出する場合の例です。
select * from 対象テーブル
where (starttime = '14:00' and endtime ='20:00')
or (starttime < '14:00' and endtime > '14:00')
or (starttime < '20:00' and endtime > '20:00')
or ('14:00' < starttime and '20:00' > starttime)
or ('14:00' < endtime and '20:00' >endtime );
何度か開発で作成したことがある条件なのですが、
必要になるたびに一から考えているような気がするので
ここにメモしておきます。