我有一个mySQL数据库,我需要检查表中最近的一天,如果一天过去了,就调用一个过程。所以我尝试了这个密码:

DECLARE mDay DATE;

SELECT `date`  INTO mDay
FROM TimeTable ORDER BY `date` DESC
LIMIT 1;

IF(mDay = NULL OR mDay != DATE(CURRENT_TIMESTAMP)) THEN
    CALL UpdateTimeTable()
END IF;

(在我当前的测试用例中,时间表是空的。)
但过程从未被调用,所以我尝试将条件更改为:mDay = NULL OR mDay != NULL,但它仍然没有被调用。然后我试了一下,但还是没打电话。
最后,我将它改为简单的mDay = DATE(CURRENT_TIMESTAMP) OR mDay != DATE(CURRENT_TIMESTAMP),然后它调用过程。
这里出什么事了?

最佳答案

这是因为mySQL使用IS NULLIS NOT NULL与NULL进行比较,而对于其他所有内容则使用=进行比较。

关于mysql - MySQL日期比较总是错误的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31213322/

10-08 22:39