24時間を超える日付の計算

MySQL, Tips| | 2011.02.13

プルダウンから時間を選ばせて、DATE型やDATETIME型に入れたいときなど。

プルダウン用テーブル time_list

timeID     timelabel
1     1900-01-00 00:00:00
2     1900-01-00 00:30:00
3     1900-01-00 01:00:00
4     1900-01-00 01:30:00
5     1900-01-00 02:00:00
(中略)
10 1900-01-01 00:00:00
11 1900-01-01 00:30:00
12 1900-01-01 01:00:00

timelabelカラムがDATETIME型なのがポイント。

で、以下のSQLを実行します。

SELECT DATE_ADD(‘2011-02-13′,interval date_format(timelabel,’%d %H:%i’) DAY_MINUTE) FROM time_list;

結果↓

2011-02-13 00:00:00
2011-02-13 00:30:00
2011-02-13 01:00:00
2011-02-13 01:30:00
2011-02-13 02:00:00
(中略)
2011-02-14 00:00:00
2011-02-14 00:30:00
2011-02-14 01:00:00