日付の重複をSQLで検索する

公開日: : 最終更新日:2014/03/10 SQL Server , , ,

SQLを使って期間の重複を見つけ出す

SQLを使って、開始日付、終了日付を持っているレコードの
期間の重複を検索して見ます。

テーブルの準備

まずは以下のようなレコードに有効期限を管理する開始日付、終了日付を
持ったテーブルを作成します。

レコード作成

次に以下のように開始日付と終了日付が重複したレコードを作成します。

data_cd from_date to_date data_name
1 2013-01-01 2013-12-31 DATA_CD=1基準レコード
2 2012-12-01 2013-11-30 DATA_CD=2、TOが重複
2 2013-01-01 2013-12-31 DATA_CD=2基準レコード
3 2013-01-01 2013-12-31 DATA_CD=3基準レコード
3 2013-02-01 2014-01-31 DATA_CD=3、FROMが重複
4 2013-01-01 2013-12-31 DATA_CD=4基準レコード
4 2013-02-01 2013-11-30 DATA_CD=4、FROM,TOが重複
5 2012-01-01 2012-12-31 DATA_CD=5FROM,TOがともに過去
5 2013-01-01 2013-12-31 DATA_CD=5基準レコード
6 2013-01-01 2013-12-31 DATA_CD=6基準レコード
6 2014-01-01 2014-12-31 DATA_CD=5FROM,TOがともに未来

日付の重複をSQLで検索

実際に開始日付、終了日付の期間が重複しているレコードを検索してみます。

以下が実行した結果です。

data_cd data_name from_date to_date
2 DATA_CD=2、TOが重複 2012-12-01 2013-11-30
2 DATA_CD=2基準レコード 2013-01-01 2013-12-31
3 DATA_CD=3基準レコード 2013-01-01 2013-12-31
3 DATA_CD=3、FROMが重複 2013-02-01 2014-01-31
4 DATA_CD=4基準レコード 2013-01-01 2013-12-31
4 DATA_CD=4、FROM,TOが重複 2013-02-01 2013-11-30
スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • 13 follow us in feedly
  • 関連記事

    ISNULLとCOALESCEは動作が異なる

    ISNULLとCOALESCEは動作が異なるので注意が必要 とある人が作成したSQLを見ているとC

    記事を読む

    SQLで文字列を反転させる

    SQLで文字列を反転させる SQLで文字列を"012345"を後ろから並び変えて"543210"の

    記事を読む

    SQLServer

    SQLServerで「WITH ROLLUP」を使って小計、総合計を出力する

    「WITH ROLLUP」を使って小計、総合計を出力 SQLServerでは「WITH ROLLU

    記事を読む

    テーブル型を戻り値とする関数の作成方法

    SQLServerでテーブル型を戻り値とする関数を作る SQLServerではINT型やVARCH

    記事を読む

    列は既にデフォルトにバインドされています。

    テーブルのカラムの属性変更でデフォルト値を変更する テーブルのカラムの属性変更でデフォルト値を変更

    記事を読む

    SQLServer

    指定した値と同じ場合はNULLを返すNULLIF関数

    使いどころがいまいち不明な「NULLIF()」 SQLServerには使いどころがいまいち不明な関

    記事を読む

    SQLServer

    SQLで検索結果を縦横変換する

    SQLで検索結果を縦横変換する SQLで取得した各行を一定のくくりで横に表示させたいときがあります

    記事を読む

    SQLServer

    SQLServerで引数の順序を考慮せずに呼び出せるストアドプロシジャを作る

    引数の順序を考慮せずに呼び出せるストアドプロシジャ ストアドプロシジャを呼び出す際に、引数が多いも

    記事を読む

    SQLServerのバージョン番号を取得する方法

    SQLServerのバージョン番号を取得する SQLServerのバージョン番号は「@@VERSI

    記事を読む

    ALTER TABLEのALTER COLUMNで「列 ‘xxxxx’ に依存しています」とエラーになる

    ALTER COLUMNで「列 'xxxxx' に依存しています」とエラー SQLServerでカ

    記事を読む

    再帰SQLで最大再帰数の指定

    再帰SQLを実行すると最大再帰数に達してエラー 先日作成した日付を管

    DATENAME関数を使って日付を取得する。

    DATENAME関数を使って日付取得 SQLServerでDATEN

    SQLで改行コードを含む項目を取得する

    SQLで改行コードを含む項目を検索する Microsoft SQL

    SQLServer
    SQLServerで「WITH ROLLUP」を使って小計、総合計を出力する

    「WITH ROLLUP」を使って小計、総合計を出力 SQLServ

    SQLServerでsp_renameを使ってテーブルの列名を変更する

    SQLServerで列名を変更するには sp_renameを使って列

    →もっと見る



    PAGE TOP ↑