2017-08-28 16 views
1

ネットワークデータの日付の間隔を特定できます。例えば:SQL Server - 日付範囲のギャップを特定する

  • ネットワーク1:1/1/12(開始) - 2014年12月31日(終了)
  • ネットワーク2:1/1/17(開始) - 12/31/9999(年間でネットワーク1、終了日及びネットワーク2開始日の間にすき間がある終わり)上記の例では

2015と2016あなたが日付を比較できるように離散的な値を持っている必要があり

+0

あなたの期待する結果は? –

+0

これはSQLであるため、クエリを構成しようとしているテーブルスキーマとは何ですか?ネットワーク2が12/31/9999を日付として持つのはなぜですか。あなたは単純に未定義のまま残すことができます(つまり未定義の上限) – Acewin

+0

このスタックオーバーフローの質問はあなたの問題を解決しますか? https://stackoverflow.com/questions/9604400/sql-query-to-show-gaps-between-multiple-date-ranges – bbrumm

答えて

0

とギャップを見つける。日時は日の意味で非常に離散ではないので、あなたはカレンダーのテーブルを作成すると思うかもしれない(あなたが時間、分、秒を持っている)、何かのように:

|date  | 
|----------| 
|01-01-2000| 
|01-02-2000| 
|01-03-2000| 
... 
12-31-2050 

私はあなたがまでそれを埋めるために必要があることを疑います年9999

カレンダーテーブルには、要件に応じて、日付、月、または年のいずれかを含めることができます。

このようなテーブルを作成した後、条件に応じて、データテーブルを使用してカレンダーテーブルに参加して、ギャップを見つけることができます。ような何か:あなたのテーブルやクエリに関する完全な情報を提供していないので、

SELECT date, table.id 
FROM calendar 
LEFT JOIN table on calendar.date BETWEEN table.start_date AND table.end_date 
WHERE table.id IS NULL 

これは、基本的な仮定の例ですが、あなたが望む結果を得るためにそれに取り組むことができます。

関連する問題