Есть ли какое-либо различие между DATE_SUB () и использующий арифметические операторы для вычисления даты и времени?

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

Кавычка из руководства MySQL:

Арифметика дат также может быть выполнена с помощью ИНТЕРВАЛА вместе с + или - оператор:

date + INTERVAL expr unit
date - INTERVAL expr unit

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

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

и

SELECT NOW() + INTERVAL 7 DAY;

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

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

13
задан Dan Soap 1 February 2010 в 14:25
поделиться

2 ответа

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

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

Дата + интервал EXPR Блок

Дата - интервал EXPR Блок

Учитывая, что он одобрен документами, я думаю, что любая разница стильно. Я лично думаю, что +/- легче читать (в конце концов, вы не используете int_add (...) или double_add (...), чтобы манипулировать числовыми значениями, так почему даты?). Другие могут иметь свои причины для симпатии Date_add и Date_Sub, и это тоже нормально. Просто выберите что-нибудь и держитесь с ним.

JEMIAH

6
ответ дан 2 December 2019 в 01:31
поделиться

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

.
3
ответ дан 2 December 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: