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.