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

После того, как я увидел здесь много вопросов с использованием функций 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? (помимо читабельности?)

Ответы [ 2 ]

5 голосов
/ 01 февраля 2010

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

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

дата + интервал expr единица измерения

дата - интервал expr единица

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

Jemiah

4 голосов
/ 01 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...