2015-07-03 127 views
1

我有一個mySQL數據庫,我需要檢查表中最近的一天,並在一天過去後調用過程。所以,我想這個代碼: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),但它仍然沒有被調用。

最後我把它改成了簡單的true然後它調用了這個過程。

這裏怎麼回事?

+2

對'= NULL'的測試應該是'IS NULL'嗎?正如在這個問題中看到的,[如何檢查變量是否爲NULL,然後將其設置爲MySQL存儲過程?](http://stackoverflow.com/questions/18499747/how-to-check-if-a-variable -is空 - 則 - 設置它與-A-MySQL的存儲過程)。我是[Postgres](http://www.postgresql.org/),不是MySQL的人,所以我不知道。 –

回答

1

這是因爲mySQL使用IS NULLIS NOT NULL與NULL進行比較,以及=對於其他所有內容。