1

我有一个带有时间字段的表,我需要向它添加一个 int 字段。这是代码行(它是触发器的一部分。)

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

这一直有效,直到时间达到一个完整小时。所以 8:30:00 + 1500 = 8:45:00 但是 8:30:00 + 3000 = 0:00:00。

如何解决这个问题?

提前致谢!:)

4

3 回答 3

1

您应该添加一个显式间隔,而不是添加“普通”int :

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

当然,您不仅限于使用:如果您需要更高的精度MINUTE,您可以使用。SECOND

于 2012-05-13T13:53:07.323 回答
0

MySQL 不会通过添加您尝试的“秒”来直接进行日期/时间数学运算。但是您可以通过 Date_Add() 和 Date_Sub() 进行,例如

设置约会结束 = date_Add(约会时间,间隔 15 分钟)

于 2012-05-13T13:53:31.640 回答
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'

因此,例如,如果持续时间以秒为单位:

    SET NEW.appointmentEnd = NEW.appointmentTime + INTERVAL duration SECOND;
于 2012-05-13T14:10:12.540 回答