2010-02-01 11 views
10

Después de que he visto un montón de preguntas aquí utilizando los DATE_SUB() o DATE_ADD() funciones en lugar de los operadores aritméticos + o -, me preguntaba si había alguna diferencia:¿Hay alguna diferencia entre DATE_SUB() y el uso de operadores aritméticos para el cálculo de fecha y hora?

Presupuesto de la MySQL-manual:

fecha aritmética también se puede realizar utilizando INTERVALO junto con el + o - operador:

date + INTERVAL expr unit 
date - INTERVAL expr unit 

Así que, básicamente, estas dos afirmaciones devuelven el mismo resultado:

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

y

SELECT NOW() + INTERVAL 7 DAY; 

Ahora mi pregunta:

¿Hay alguna diferencia entre DATE_SUB() y utilizando el operador - en MySQL? (además de la legibilidad?)

Respuesta

4

La documentación de MySQL para DATE_ADD (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add) establece explícitamente que puede hacer fecha aritmética con los operadores + y -.

Fecha aritmética también se puede realizar utilizando INTERVALO junto con el + o - del operador:

fecha + expr intervalo unidad

fecha - unidad de expr INTERVALO

Dado que está respaldado por los documentos, creo que cualquier diferencia es estilística. Personalmente creo que el +/- es más fácil de leer (después de todo, no se usa INT_ADD (...) o DOUBLE_ADD (...) para manipular valores numéricos, entonces ¿por qué fechas?). Otros pueden tener sus propias razones para gustar DATE_ADD y DATE_SUB, y eso está bien también. Solo elige algo y apégate a él.

Jemiah

3

Para mí, es una cuestión de experiencia. Después de lidiar con múltiples editores, bibliotecas y herramientas que manipulan las bases de datos, aprendí a no confiar en los operadores "+" y "-" tanto como confío en DATE_SUB(). Es mucho menos probable que algo se rompa accidentalmente como parte de la próxima actualización de software con DATE_SUB(), en comparación con el uso de +/-

+2

¿Podría aclarar esto un poco? ¿En qué caso un editor rompería la sintaxis sql? –

+0

Por ejemplo, en los casos en que el analizador está roto, con el editor de SQL aceptando el SQL no válido como válido, o indicando que el SQL válido no es válido y negándose a aceptarlo. – blueberryfields

Cuestiones relacionadas