MySQL 5.0的遷移指南指出,在DATE和DATETIME之間進行比較的方式已更改。新MySQL中的舊日期比較處理
不兼容的變化:與MySQL 5.0.42,當DATE值與DATETIME值進行比較開始,DATE值是通過將時間部分爲00:00:00強制爲DATETIME類型。以前,DATETIME值的時間部分被忽略,或者比較可以作爲字符串比較來執行。爲了模仿舊的行爲,使用CAST()函數使比較操作數與之前一樣處理。例如:
因此,例如,「選擇...其中my_date <現在()」現在做的比較DATETIME(其中包括今天在00:00:00),並用來做DATE比較(這將不包括今天)。
是否有例如一個MySQL配置選項,使舊的行爲?我還找不到,但這並不一定意味着它不在那裏。
我們擁有> 100 KLOC代碼,其中包含多個有關計費的SQL語句,這些語句都依賴於舊的日期處理。
這對你沒有任何幫助,但我想知道你爲什麼被允許首先比較DATE和DATETIME。如果他們是兩種不同的類型,你應該被迫投下其中一個。 –