Непоследовательное поведение 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
Есть какие-нибудь идеи, почему это так?
Решение
У меня была похожая проблема, когда это не сработало бы при ВЫБОРЕ, если бы я не установил ОГРАНИЧЕНИЕ.
Попробуйте сделать что-то вроде:
SELECT * FROM `my_table` WHERE DATEDIFF(NOW(), updated) > 2 LIMIT 0, 10
Это было исправлено при обновлении MySQL.Попробуйте также обновить свою версию MySQL.
Другие советы
Убедитесь, что у вас нет пробела между DATEDIFF
и скобка (
.
Возможно, вы также могли бы попробовать SET sql_mode = "IGNORE_SPACE";
Также проверьте это багрепорт.
Не связан с StackOverflow