【Oracle】DUAL表を使ったSQLで連番や連続した日付を複数行で取得

Amazonのアソシエイトとして、[きんぽめ]は適格販売により収入を得ています。

きんぽめ(X・旧Twitter) | きんぽめ(Threads)
おれぽめ(Amazonセール検索) | でむむーぶ(DMMブックスセール検索) | らっこぼ(楽天Koboセール検索)

🔥注目セール🔥
📚【9/18更新】Kindleセールおすすめ最新まとめ|『エヴァ』『住みにごり』『BLUE GIANT EXPLORER』『SHAMAN KING』など50%ポイント還元!高橋よしひろ先生の『銀牙』シリーズなどが55円!『ハニー』が100円!『EX-ARM エクスアーム』シリーズがポイント還元で実質77円!『Dr.DMAT~瓦礫の下のヒポクラテス~』が77円!秋田書店の『神アプリ』が99円!
🔥【Amazonマンガ毎週末セール】いま注目の旬マンガ50%ポイント還元(2026年09月18日~2026年09月21日)
📗【最大12%ポイント上乗せ】Kindle本 (電子書籍) まとめ買いキャンペーン (期間限定ポイント)(2026年09月15日~2026年10月09日)
📘Kindle本199円セール(2026年09月18日~2026年09月24日)
📙双葉社 秋のマンガ祭 100円以下が1000点以上のお得なセール(2026年09月01日~2026年09月30日)

Oracleで連番を取得したい時ってありますよね!
連続した日付を取得したい時もありますよね!

取得できるととても便利なので備忘録として残しておきます。

目次

DUAL表を使って連番を取得する

SELECT LEVEL SEQ
FROM DUAL
CONNECT BY LEVEL <= 10;

LEVELじゃなくてROWNUMでもできます。

SELECT ROWNUM SEQ
FROM DUAL
CONNECT BY ROWNUM <= 10;
SEQ
1
2
3
4
5
6
7
8
9
10

DUAL表を使って日付を複数行で取得する

SELECT A.DATE_FROM + LEVEL - 1 AS DATES
FROM(
    SELECT TO_DATE('2021/12/25', 'YYYY/MM/DD') AS DATE_FROM
         , TO_DATE('2022/01/05', 'YYYY/MM/DD') AS DATE_TO
    FROM DUAL
    ) A
CONNECT BY LEVEL <= A.DATE_TO - A.DATE_FROM + 1;

日付取得もROWNUMでもできます。

SELECT A.DATE_FROM + ROWNUM - 1 AS DATES
FROM(
    SELECT TO_DATE('2021/12/25', 'YYYY/MM/DD') AS DATE_FROM
         , TO_DATE('2022/01/05', 'YYYY/MM/DD') AS DATE_TO
    FROM DUAL
    ) A
CONNECT BY ROWNUM <= A.DATE_TO - A.DATE_FROM + 1;

SQL実行結果

DATES
2021-12-25 00:00:00
2021-12-26 00:00:00
2021-12-27 00:00:00
2021-12-28 00:00:00
2021-12-29 00:00:00
2021-12-30 00:00:00
2021-12-31 00:00:00
2022-01-01 00:00:00
2022-01-02 00:00:00
2022-01-03 00:00:00
2022-01-04 00:00:00
2022-01-05 00:00:00

例えば出勤時間・退勤時間を登録するテーブルがあったとして、そのテーブルからデータを取得すると休みの日の日付が取得できないので「休みの日付も取得できたらなぁ」ということもあると思います。

そんな時、DUAL表から取得した日付と外部結合すると日付の抜けがなくて便利!

こちらもチェックしてみてください
【Kindleセール】Oracle関連書籍
【Kindleセール】IT・システム・プログラミングの技術書

きんぽめ(X・旧Twitter) | きんぽめ(Threads)
おれぽめ(Amazonセール検索) | でむむーぶ(DMMブックスセール検索) | らっこぼ(楽天Koboセール検索)

お得なセール情報は皆に教えてあげてね!
目次