↑こちらの記事を読んで、日時で同じことができそうと思って書いたのがこれ↓
-- 2010/02/01~2010/02/28を取得
SELECT
@f:='2010-02-01'
UNION ALL
SELECT
@f:=DATE_ADD(@f, INTERVAL 1 DAY)
FROM
SomeTable -- 取得したい行数以上のレコードがあるテーブル
WHERE
@f < '2010-02-28'
これをFROM句に入れると、日別集計などをするときに便利。
あまり長期間だとSomeTable
を用意するほうが大変かもだけど…
追記(2017/03/29)
なんだかんだで何年も便利に使っているので、DB2版の例も。
with CAL(TS) as (
select timestamp(date('2015-09-01'), time('00:00:00')) TS from SYSIBM.SYSDUMMY1
union all
select TS + 1 day from CAL where TS + 1 day < timestamp(date('2015-10-01'), time('00:00:00'))
)
select year(CAL.TS)*10000 + month(CAL.TS)*100 + day(CAL.TS) YMD from CAL