2013年9月17日火曜日

SQLの日付期間の重複チェッククエリ

予約システムなどを構築する時にSQLで日付で期間の重複チェックを行う機会は多いと思います。
そこで、SQLで期間の重複チェックをする条件文をメモとして記載したいと思います。

実装方法

例として以下の項目を持ったhogeというテーブルがあったとします。
  1. id
  2. start_date[開始日]
  3. end_date[終了日]
対応しなければいけないパターンは以下のパターンです。

このパターンを全て対応したSQLは以下になります。
select count(*) from hoge
where start_date <= :end_date and end_date >= :start_date

※:start_dateは登録予定の開始日 :end_dateは登録予定の終了日


このSQLで件数を取得し、2件以上だったら重複などの制御を入れることで日付の重複チェックが可能になります。

Written By : // 15:34
Category:

0 コメント:

コメントを投稿

 

About

このブログは筆者の備忘録として色々記載しています。
Powered by Blogger.