質問:
未ソートの日付の単一列。これらの範囲は、カレンダー オブジェクトを正確に埋めるために開始日と終了日を必要とする時間のセグメントを表します。
解決策:
アプローチ:
SQL を使用してこの問題を解決するには、「ギャップ アンド アイランド」メソッドを使用できます。この方法では、この値が連続するシーケンスごとに一定のままであるため、連続する日付を行番号との差によってグループ化します。次に、MIN() 関数と MAX() 関数を使用して、各グループの開始日と終了日を抽出します。
SQL クエリ:
WITH t AS ( SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i FROM @d GROUP BY InfoDate ) SELECT MIN(d),MAX(d) FROM t GROUP BY DATEDIFF(day,i,d)
説明:
出力:
結果のテーブルには次のものが含まれます。 columns:
この出力は、連続する各日付範囲の開始日と終了日を提供し、カレンダー オブジェクトに次の値を設定できます。必要な日付情報。
以上がSQL で連続する日付範囲を特定して抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。