比较单个表中的两个日期列

时间:2018-01-10 10:43:23

标签: mysql date compare

我的数据库中的一个表包含某个项目的check_in_datecheckout_date。我想创建一个触发器,如果​​有人输入的签出日期早于签到日期,则不允许更新表格,例如签入时间为2017-10-16,然后是2017-10-14不应该允许结账。我看了https://dev.mysql.com/doc/refman/5.7/en/using-date.html,并说它在将两列与日期进行比较时应使用STRCMP。所以我尝试了,但它仍然接受任何日期。我可能正在使用STRCMP错误,当第一个参数较小时它应返回-1,但我不确定这是否是在if语句中使用它的正确方法。

    DROP TRIGGER IF EXISTS check_dates;
    DELIMITER //
    CREATE TRIGGER check_dates
    BEFORE UPDATE ON dates
    FOR EACH ROW
    BEGIN
        IF STRCMP('NEW.checkout_date', 'check_in_date')=-1
        THEN
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Checkout date must be after the checkin.';
        END IF;
    END;//
    DELIMITER ;

0 个答案:

没有答案