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

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

Linda Hamilton
リリース: 2025-01-02 15:06:42
オリジナル
971 人が閲覧しました

How Can I Generate Dates Across Multiple Date Ranges in Oracle?

日付生成のための複数の日付範囲の処理

2 つの日付間の日付の生成は、さまざまなプログラミング シナリオでよく発生します。単一の範囲の日付を生成するのは簡単ですが、この機能を拡張して複数の範囲を処理するには課題が生じる可能性があります。

各行が日付範囲を表す次の表を考えてみましょう。

ID START_DATE END_DATE
101 April 1, 2013 April 10, 2013
102 May 10, 2013 May 12, 2013

期待される値出力は各範囲内の個別の日付を生成する必要があります:

ID Dates
101 April 1, 2013
101 April 2, 2013
... ...
101 April 10, 2013
102 May 10, 2013
102 May 11, 2013
102 May 12, 2013

Oracle はこれを実現するための独創的なソリューションを提供しています。 result:

select 
  A.ID, 
  A.START_DATE + (delta - 1) 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 - 1) <= A.end_date
order by 1, 2;
ログイン後にコピー

デルタ列は、Oracle の CONNECT BY 階層を使用して、1 からテーブル内の終了日と開始日の最大の差までの一連の整数を生成します。 A.START_DATE (デルタ - 1) 式は、結果内の各レコードの適切なデルタだけ開始日を増分します。 WHERE 句は、現在の日付範囲の終了日を超える結果を除外します。

Oracle で複数の範囲にわたる日付を生成するためのこの洗練されたソリューションをお楽しみください!

以上がOracle で複数の日付範囲にわたる日付を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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