この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
以前、Postgresqlで日付を列挙する方法を書きましたが
今回はOracleでの列挙方法について書きます。
■ カレンダーテーブルがない!日付列挙したい!
postgresqlの場合→ http://doruby.kbmj.com/hotdog/20120920/Postgresql_generate_series_
今回はOracle、どうやったら実現できるのだろうか?
■ 答え(2014年2月の一カ月分を列挙する場合)
SELECT TO_DATE(STARTDATE + ROWNUM -1, ‘YYYY/MM/DD’) AS CALENDAR
FROM
(SELECT TRUNC(TO_DATE(‘2014-02-01’)) AS STARTDATE,
TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE(‘2014-02-01’)), ‘DD’)) AS DAYS
FROM DUAL),
ALL_CATALOG
WHERE ROWNUM <= DAYS
以下出力結果
CALENDAR
14-02-01
14-02-02
14-02-03
14-02-04
14-02-05
14-02-06
14-02-07
14-02-08
14-02-09
14-02-10
14-02-11
14-02-12
14-02-13
14-02-14
14-02-15
14-02-16
14-02-17
14-02-18
14-02-19
14-02-20
14-02-21
14-02-22
14-02-23
14-02-24
14-02-25
14-02-26
14-02-27
14-02-28
次回はMySQLでの取得方法を書きたいです。