2020-03-21
SQLで連続した日付のテーブルを生成する
SQLで連続した日付のテーブルを生成する方法。個人的メモ。
SELECT date_table.date
FROM
(SELECT CURDATE() - INTERVAL seq_no DAY AS DATE
FROM
(SELECT @seq_no := 0 AS seq_no
UNION SELECT @seq_no := @seq_no + 1 AS seq_no
FROM information_schema.COLUMNS LIMIT 3660) tmp) date_table
WHERE date >= '2020-01-01'
「現在の日付から seq_no
日前の日付」を3660回(約10年分)UNION SELECT
したうえで、WHERE
句で期間を指定する。
集計作業で10年以上さかのぼることは(個人的には)まずないので、とりあえずこれで期待通り動く。LOOP
構文も調べたがこのようなケースで使えるのかよく分かっていない…