sql >> Base de Datos >  >> RDS >> Mysql

ADDDATE() vs DATE_ADD() en MySQL:¿Cuál es la diferencia?

Cuando usamos MySQL, tenemos la opción de usar ADDDATE() y DATE_ADD() funciona siempre que queramos añadir un intervalo de tiempo específico a una fecha determinada. Ambas funciones hacen lo mismo, pero hay una diferencia entre ellas.

Este artículo demuestra la diferencia entre ADDDATE() y DATE_ADD() en MySQL.

Sintaxis

La diferencia entre estas dos funciones está en su sintaxis. Una función permite dos formas diferentes, mientras que la otra solo permite una forma.

FECHA_ADD()

El DATE_ADD() la sintaxis es así.

DATE_ADD(date,INTERVAL expr unit)

Esto acepta un valor de fecha, seguido del INTERVAL palabra clave y la expresión y la unidad que se agregarán a la fecha proporcionada por el primer argumento.

AÑADIR FECHA()

El ADDDATE() la sintaxis permite dos formas. Puede utilizar cualquiera de los siguientes formularios.

ADDDATE(date,INTERVAL expr unit)

O

ADDDATE(expr,days)

El primer formulario es exactamente igual que el DATE_ADD() sintaxis. De hecho, al usar esta sintaxis, el ADDDATE() función es un sinónimo de DATE_ADD() .

Sin embargo, es la segunda forma de la sintaxis la que diferencia las dos funciones. Este segundo formulario solo está disponible cuando se usa el ADDDATE() función, y le permite usar una forma abreviada de especificar el número de días para agregar a la fecha.

Ejemplo

Aquí hay un ejemplo para demostrar la diferencia entre las dos formas.

SET @date = '2020-10-01';
SELECT 
    DATE_ADD(@date, INTERVAL 2 DAY) AS 'DATE_ADD',
    ADDDATE(@date, INTERVAL 2 DAY) AS 'ADDDATE 1',
    ADDDATE(@date, 2) AS 'ADDDATE 2';

Resultado:

+------------+------------+------------+
| DATE_ADD   | ADDDATE 1  | ADDDATE 2  |
+------------+------------+------------+
| 2020-10-03 | 2020-10-03 | 2020-10-03 |
+------------+------------+------------+

Pero si intentamos usar el segundo formulario en ADD_DATE() , obtenemos un error:

SET @date = '2020-10-01';
SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 2';

Resultado:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2) AS 'DATE_ADD 2'' at line 1

Esto se debe a que esta función no admite esa sintaxis.