ホームページ > データベース > mysql チュートリアル > SQL で複数の日付範囲にわたる日付を生成するにはどうすればよいですか?

SQL で複数の日付範囲にわたる日付を生成するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-04 10:12:34
オリジナル
651 人が閲覧しました

How to Generate Dates Across Multiple Date Ranges in SQL?

複数の日付範囲間の日付の生成

指定された 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート