2012-05-13 7 views
1

iは時間フィールドを持つテーブルを持っていると私はそれにint型のフィールドを追加する必要があります。 ここでのコードの行があります(これは、トリガーの一部です。)のMySQL:時間+ INT

DECLARE duration Int; 
[....] 
SET NEW.appointmentEnd = NEW.appointmentTime + duration; 

時間がいっぱい時間に達するまでこれが動作します。したがって8:30:00 + 1500 = 8:45:00しかし8:30:00 + 3000 = 0:00:00。

これを修正するにはどうすればよいですか?

ありがとうございます! :)

答えて

1

代わりの「プレーン」のintを追加して、あなたはanexplicit 間隔追加する必要があります。

new.appointmenttime = (new.appointmenttime + INTERVAL durationInMinutes MINUTE) 

をあなたはもちろん、MINUTEを使用して、これらに限定されない:あなたはより多くを必要とする場合は、SECONDを使用することができます精度。

+0

おかげで、しかしSECOND SET NEW.appointmentEnd = NEW.appointmentTime + INTERVAL期間;私はあなたにsqlfiddle上のサンプルをビルドするよ、私に数分を与える@schoen – Nick

+0

動作しません... – dasblinkenlight

+0

OKおかげで、私は待っています:) – Nick

0

MySQLは「秒」でしようとしているものを追加することにより、直接日付/時刻の数学を行いません。しかし、あなたはDATE_ADD()とDATE_SUB()を経由して行うことができ、このような

としてセットappointmentEnd = DATE_ADD(appointmentTime、間隔15分)

あなたが好き、日付計算を使用する必要があります
+0

応答はありがたいですが、SET NEW.appointmentEnd = Date_add(NEW.appointmentTime、INTERVAL duration MINUTE);どちらも動作しません:( – Nick

0

mysql> SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND; 
    -> '2009-01-01 00:00:00' 

または

mysql> SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 DAY); 
    -> '2011-01-01 23:59:59' 

期間があるのであれば、例えば、秒:

あなたの応答のためのの