Есть ли разница между 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() по сравнению с использованием +/-