Напомним, что в mysql есть два разных типа вычитаний, связанных с датой и временем: суффикс _SUB предназначен для вычитания даты без интервала , возвращая date .Суффикс _DIFF предназначен для получения разности между двумя датами , возвращая интервал (Кстати, обратите внимание, что только у первой есть обратный аналог: _ADD )
Знаки +/- должны использоваться для первого (ADD / SUB), поэтому MYSQL ожидает интервал в качестве второго аргумента.
DATE = DATE_ADD(DATE,INTERVAL) Also accepts +
DATE = DATE_SUB(DATE,INTERVAL) Also accepts -
INTERVAL = DATE_DIFF(DATE,DATE )
См. Документ здесь , бит начинается с:
Date arithmetic also can be performed using INTERVAL
together with the + or - operator...
Следовательно, некорректно использовать - для определения разницы между двумя датами.Теперь MYSQL, столкнувшись с неверными выводами, пытается сделать лучшее предположение (вместо того, чтобы выдавать ошибку), иногда это идет хорошо, иногда нет.