複数の日付範囲間の日付の生成
指定された 2 つの日付間の日付を生成する問題は、非常に一般的です。ただし、複数の日付範囲を扱う場合、ソリューションはより複雑になる可能性があります。 StackOverflow のこの質問は、そのようなシナリオの 1 つを示し、インライン ビューと再帰クエリを使用した洗練されたソリューションを提供します。
select A.ID, A.START_DATE+delta dt from t_dates A, ( select level-1 as delta from dual connect by level-1 <= ( select max(end_date - start_date) from t_dates ) ) where A.START_DATE+delta <= A.end_date order by 1, 2
インライン ビューは、1 から開始と終了の間の最大の差までのデルタの範囲を計算します。再帰クエリを使用して、テーブル内の任意の範囲の日付を取得します。このデルタの範囲はメイン クエリで使用され、各範囲の開始日と終了日の間のすべての日付が生成されます。
クエリはまず t_dates テーブルをインライン ビューと結合し、開始の可能なすべてのペアを生成します。日付とデルタ。次に、結果の日付が対応する範囲の終了日を超えるペアをフィルターで除外します。最後に、クエリは結果を ID と日付で並べ替えます。
このソリューションは柔軟で、任意の数の日付範囲の日付を生成するために使用できます。再帰クエリの力を活用して、この問題を解決するための簡潔かつ効率的な方法を提供します。
以上がSQL で複数の日付範囲にわたる日付を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。