【Oracle】指定日から連続した日付を取得

SQLで指定日から連続した日付を取得します。
集計画面で日ごとの合計を表示したい場合の親テーブルとして利用できます。

  • 例1(ALL_CATALOGを利用)

    SELECT TO_DATE('20150101', 'YYYYMMDD') + ROWNUM -1 AS DCOL FROM ALL_CATALOG WHERE TO_DATE('20150101', 'YYYYMMDD') + ROWNUM -1 <= TO_DATE('20150131', 'YYYYMMDD')ORDER BY 1;
    

    FROM句には指定日から連続した日付の範囲分の行を持っている必要があります。
    今回の例では「ALL_CATALOG」を利用していますが、
    そもそも参照権限がない場合もあるので、1~31までのNoだけを持つ空テーブルを利用します。

  • 例2(ALL_CATALOGの代わりに1~31までのNoだけを持つ空テーブルを利用)

    SELECT TO_DATE('20150101', 'YYYYMMDD') + ROWNUM -1 AS DCOL FROM (SELECT LEVEL id FROM DUAL CONNECT BY LEBEL <= 31) WHERE TO_DATE('20150101', 'YYYYMMDD') + ROWNUM -1 <= TO_DATE('20150131', 'YYYYMMDD')ORDER BY 1;
    
  • 例3(1~31までのNoだけを持つ空テーブルだけを利用)

    SELECT SYSDATE + LEVEL AS HIZEKE FROM DUAL CONNECT BY LEBEL <= 31;