Я столкнулся с странным, неожиданным поведением при использовании функции CURRENT_DATE в MySQL. Рассмотрим следующий пример:странное поведение MySQL при использовании CURRENT_DATE минус числовое значение
SELECT
DATE(CURRENT_DATE - 0) AS 'today',
DATE(CURRENT_DATE - 1) AS 'yesterday',
DATE(CURRENT_DATE - 2) AS '2 days ago',
DATE(CURRENT_DATE - 3) AS '3 days ago'
Как ни странно, это возвращает две даты и два NULL значения (при выполнении на 2015-04-01). Следующий код возвращает четыре даты, как и ожидалось:
SELECT
DATE_ADD(CURRENT_DATE, INTERVAL 0 DAY) AS 'today',
DATE_ADD(CURRENT_DATE, INTERVAL -1 DAY) AS 'yesterday',
DATE_ADD(CURRENT_DATE, INTERVAL -2 DAY) AS '2 days ago',
DATE_ADD(CURRENT_DATE, INTERVAL -3 DAY) AS '3 days ago'
Кто знает, почему прежний набор кода возвращает неожиданные результаты, а последние возвращает ожидаемые результаты?
Итак, почему, по-вашему, вы можете вычитать целые числа с даты? – zerkms