mysqlでdate型を月毎に集計する
以下のように日付をもつテーブルがあるとする。
CREATE TABLE `event` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `prefecture` varchar(3) NOT NULL, `event_date` date NOT NULL, PRIMARY KEY (`id`) );
| id | prefecture | event_date |
|---|---|---|
| 1 | 千葉 | 2014-07-19 |
| 2 | 千葉 | 2014-08-01 |
| 3 | 佐賀 | 2014-10-10 |
| 4 | 滋賀 | 2014-12-01 |
| 5 | 佐賀 | 2014-10-10 |
| 6 | 滋賀 | 2014-12-02 |
このテーブルでevent_dateを月毎に集計する必要がある場合、DATE_FORMATを使って以下のように書ける。
select DATE_FORMAT(event_date, "%Y%m") as ym, count(id) as count from event group by DATE_FORMAT(event_date, "%Y%m");
| ym | count |
|---|---|
| 201407 | 1 |
| 201408 | 1 |
| 201410 | 2 |
| 201412 | 2 |