2011年10月13日木曜日

MySQLで時間(TIME)の足し算引き算

時間を保存するカラムを持ったテーブルがあります。
例えば、以下の時間割のテーブルを作ったとしましょう。


-- num 時限
-- subject 教科
-- start_time 開始時刻
CREATE TABLE time_tables (
    id int unsigned PRIMARY KEY auto_increment,
    num smallint unsigned NOT NULL,
    subject varchar(50) NOT NULL,
    start_time time NOT NULL
) CHARACTER SET utf8;


開始時刻10分前の情報が欲しい時、start_timeから10分を引けばいいんですけど、普通に引き算してもダメです。
TIMEDIFF関数を使って引き算することができます。


SELECT TIMEDIFF(start_time, '00:10:00') as before10min
  FROM time_tables;


逆に10分後の情報が欲しい時は、ADDTIME関数を使います。


SELECT ADDTIME(start_time, '00:10:00') as after10min
  FROM time_tables;


例えば時間を監視する処理が走っていて、ある時間の何分前になったら集計を行うとか、そんな時に使えそうですね。

0 件のコメント:

コメントを投稿