複数の日付範囲内の日付の生成
要件が単一の日付範囲を超える場合、複数の日付範囲内のすべての日付を生成することが困難になります。この記事では、そのようなシナリオに対処し、効果的な解決策を提供します。
問題
提供された SQL Fiddle で示されているように、タスクは、指定されたセットのすべての日付を生成することです。次のような複数の日付範囲:
<br>ID START_DATE END_DATE<br>101 April, 01 2013 April, 10 2013<br>102 May, 10 2013 May, 12 2013<br>
解決策
以下クエリはこの問題に対処します:
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
解決策の内訳
例出力
指定された入力に対して、クエリは次の出力を返します:
<br>ID Dates<br>101 April, 01 2013<br>101 April 、2013年02月<br>101、03年4月2013<br>101 April, 04 2013<br>101 April, 05 2013<br>101 April, 06 2013<br>101 April, 07 2013<br>101 April, 08 2013<br>101 April, 09 2013<br>101 April, 10 2013<br>102 May, 10 2013<br>102 May, 11 2013<br>102 May, 12 2013<br>
以上がSQLで複数の日付範囲内のすべての日付を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。