首页 > 解决方案 > 创建此触发器时,我的时间语法有什么问题?

问题描述

这就是问题。创建一个名为 trg_late_return 的触发器,该触发器将在返回视频时将正确的值写入 DETAILRENTAL 表中的 DETAIL_DAYSLATE。当更新 DETAIL_RETURNDATE 或 DETAIL_DUEDATE 属性时,触发器应作为 BEFORE 触发器执行。触发器应满足以下条件:

如果返回日期为空,那么迟到的天数也应该为空。

如果返回日期不为空,则延迟天数应确定视频是否延迟返回。

如果返回日期是截止日期之后的中午或更早,则视频不被视为迟到,迟到的天数应为零 (0)。

如果返回日期超过了截止日期的次日中午,则视频被视为迟到,因此必须计算并存储迟到的天数。

到目前为止,这是我的代码。它给了我一个语法错误,特别是在我有“12:00:00”的地方。请帮我。

delimiter //
CREATE TRIGGER TRG_LATE_RETURN
BEFORE UPDATE ON DETAILRENTAL 
FOR EACH ROW
BEGIN
    IF NEW.DETAIL_RETURNDATE IS NULL THEN
    SET NEW.DETAIL_DAYSLATE = 0;
    END IF;

    IF NEW.DETAIL_RETURNDATE IS NOT NULL THEN
        IF NEW.DETAIL_RETURNDATE - OLD.DETAIL_DUEDATE > DATE_FORMAT(NEW.DETAIL_RETURNDATE, 'HH24:MI:SS') <= '12:00:00' THEN
        SET NEW.DETAIL_DAYSLATE = DATEDIFF(OLD.DETAIL_DUEDATE, NEW.DETAIL_RETURNDATE)*-1;
        ELSE
        SET NEW.DETAIL_DAYSLATE = 0;
        END IF;
    END IF;

END;//
delimiter ;

标签: databasetriggersmysql-workbench

解决方案


推荐阅读