我有一个带有时间字段的表,我需要向它添加一个 int 字段。这是代码行(它是触发器的一部分。)
DECLARE duration Int;
[....]
SET NEW.appointmentEnd = NEW.appointmentTime + duration;
这一直有效,直到时间达到一个完整小时。所以 8:30:00 + 1500 = 8:45:00 但是 8:30:00 + 3000 = 0:00:00。
如何解决这个问题?
提前致谢!:)
您应该添加一个显式间隔,而不是添加“普通”int :
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;