mysqlでdate型に時間を足してdatetimeを取得する
日付(date)と時刻(int)を別カラムにしているテーブルがあるとする。
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, `event_hour` smallint(6) NOT NULL, PRIMARY KEY (`id`) );
id | prefecture | event_date | event_hour |
---|---|---|---|
1 | 千葉 | 2014-07-19 | 12 |
2 | 千葉 | 2014-08-01 | 15 |
3 | 佐賀 | 2014-10-10 | 18 |
4 | 滋賀 | 2014-12-01 | 10 |
5 | 佐賀 | 2014-10-10 | 17 |
6 | 滋賀 | 2014-12-02 | 9 |
このテーブルで県毎に最新の日時を取得する必要があるとする。
日時をdatetime型1カラムで持っていれば何の問題もないが、別カラムになっているため工夫が必要。
調べた結果、date_addを使用して時間を足してやればよさそう
SELECT prefecture, MAX(DATE_ADD(event_date, INTERVAL event_hour HOUR)) as latest FROM event GROUP BY prefecture;
prefecture | latest |
---|---|
佐賀 | 2014-10-10 18:00:00 |
千葉 | 2014-08-01 15:00:00 |
滋賀 | 2014-12-02 09:00:00 |