Есть ли разница между DATE_SUB() и использованием арифметических операторов для вычисления даты и времени?

После того, как я увидел много вопросов, используя функции DATE_SUB() или DATE_ADD() вместо арифметических операторов + или -, мне было интересно, есть ли разница:

Цитата из MySQL-руководство:

Арифметика даты также может быть выполнена с использованием INTERVAL вместе с + или - оператор:

date + INTERVAL expr unit
date - INTERVAL expr unit

Таким образом, в основном эти два оператора возвращают один и тот же результат:

SELECT DATE_ADD(NOW(), INTERVAL 7 DAY);

и

SELECT NOW() + INTERVAL 7 DAY;

Теперь мой вопрос:

Есть ли разница между DATE_SUB() и использованием оператора - в MySQL? (кроме чтения?)

Ответ 1

Документация MySQL для DATE_ADD (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add) явно указывает, что вы можете выполнять арифметику дат с операторами + и -.

Арифметика даты также может быть выполнена с использованием INTERVAL вместе с оператором + или:

     

date + INTERVAL expr unit

     

date - INTERVAL expr unit

Учитывая, что он одобрен документами, я считаю, что любая разница стилистична. Я лично считаю, что +/- легче читать (в конце концов, вы не используете INT_ADD (...) или DOUBLE_ADD (...) для управления числовыми значениями, поэтому почему даты?). У других могут быть свои причины для симпатий DATE_ADD и DATE_SUB, и это тоже хорошо. Просто выберите что-нибудь и придерживайтесь его.

Jemiah

Ответ 2

Для меня это вопрос опыта. После работы с несколькими редакторами, библиотеками и инструментами, которые управляют базами данных, я научился не доверять операторам "+" и "-", насколько я доверяю DATE_SUB(). Гораздо менее вероятно, что что-то будет случайно сломано как часть следующего обновления программного обеспечения с помощью DATE_SUB() по сравнению с использованием +/-