MySQLでカレンダーテーブルを作る
自分がよく使うSQLをライブラリ的にここに残しておく。
こんな感じでSQLを書くと
SELECT @date:=date(date_format(CURRENT_DATE(),'%Y-%m-01')) as Date UNION ALL SELECT @date:=DATE_ADD(@date, INTERVAL 1 DAY) FROM `テーブル名` WHERE @date < last_day(CURRENT_DATE())
こんな感じで結果セットが取れる。
Date |
---|
2017-08-01 |
2017-08-02 |
・・・ |
2017-08-31 |
この時、SQLの中で参照するテーブルはどんな構造になっていてもかまわないけれど、ここで取得する日付範囲よりも多いレコードを持っている必要がある。
例えば上の例でいえば`テーブル名`は30レコード以上持っている必要がある。