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