1


0

一貫性のないMySQL DATEDIFF動作

このクエリを使用すると

SELECT COUNT(*) FROM `my_table` WHERE DATEDIFF(NOW(), updated) > 2

MySQLはエラーなしでクエリを実行し、過去2日間に更新されなかった行の数を取得します。 ただし、クエリを次のように変更すると:

SELECT * FROM `my_table` WHERE DATEDIFF(NOW(), updated) > 2

次のようなエラーが表示されます。

#1305 - FUNCTION mydatabase.DATEDIFF does not exist

なぜこれがそうであるかという考えはありますか?

2 Answer


3


DATEDIFF`とブラケット( `の間にスペースがないことを確認してください。

おそらく、 `SET sql_mode =" IGNORE_SPACE ";`を試すこともできます

bugreportも確認してください。


2


LIMITを設定しなかった場合、SELECTで機能しないという同様の問題がありました。

次のようにしてみてください。

SELECT * FROM `my_table` WHERE DATEDIFF(NOW(), updated) > 2 LIMIT 0, 10

MySQLの更新で修正されました。 MySQLバージョンも更新してみてください。