我有一个带有时间字段的表,我需要在其中添加一个 int 字段。这是代码行(它是触发器的一部分。
DECLARE duration Int;
[....]
SET NEW.appointmentEnd = NEW.appointmentTime + duration;
这一直有效到时间到一个小时。所以 8:30:00 + 1500 = 8:45:00 但 8:30:00 + 3000 = 0:00:00。
如何解决这个问题?
提前感谢! :)
与其添加"普通"整数,不如添加显式间隔:
new.appointmenttime = (new.appointmenttime + INTERVAL durationInMinutes MINUTE)
当然,您不仅限于使用MINUTE
:如果您需要更高的精度,您可以使用SECOND
。
MySQL不会通过添加您尝试的"秒"来直接进行日期/时间数学运算。 但是你可以通过Date_Add()和Date_Sub()来做,例如
设置约会结束 = date_Add( 预约时间,间隔 15 分钟)
你应该使用日期算术,比如:
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'
因此,如果持续时间以秒为单位:
SET NEW.appointmentEnd = NEW.appointmentTime + INTERVAL duration SECOND;