俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

MySQLで特定日からの連続する日付の一覧を作る

f:id:ie-kau:20180616033236j:plain

MySQLで分析するときに、連続する日付の表を仮想的に組み立てたいときってありますよね。

SET @start_day = '2017-04-01';
SELECT DATE_FORMAT(DATE_ADD(@start_day, INTERVAL tmp.series DAY), '%Y-%m-%d') AS day
FROM
(
    SELECT 0 series FROM DUAL WHERE (@num:=-1)*0 UNION ALL
    SELECT @num:=@num+1 FROM `information_schema`.COLUMNS
) AS tmp
HAVING DATE_FORMAT(day, '%Y-%m-%d') <= DATE_FORMAT(CURRENT_DATE(), '%Y-%m-%d');

結果

f:id:ie-kau:20181021003440p:plain

ちなみに

BigQueryだともうちょい簡単

SELECT
  date
FROM UNNEST(GENERATE_DATE_ARRAY('2017-04-01', CURRENT_DATE())) AS date
ORDER BY date;

SQLアンチパターン

SQLアンチパターン