En MariaDB, ADDDATE()
es una función de fecha y hora incorporada que realiza aritmética de fechas.
Le permite cambiar una fecha especificando la fecha, la unidad a agregar y la cantidad a agregar. Puede pasar una cantidad negativa si necesita restar la fecha por un cierto intervalo.
ADDDATE()
también tiene una sintaxis abreviada que le permite agregar un número determinado de días a la fecha.
Sintaxis
El ADDDATE()
la función tiene dos sintaxis.
Sintaxis 1:
ADDDATE(expr,days)
Donde expr
es la fecha y days
es el número de días a agregar.
Sintaxis 2:
ADDDATE(date,INTERVAL expr unit)
Donde date
es la fecha a cambiar, expr
es la cantidad a agregar, y unit
es la unidad a sumar (por ejemplo, segundo, minuto, etc.).
Al usar esta sintaxis, ADDDATE()
es un sinónimo de DATE_ADD()
.
Ejemplo:sintaxis 1
Aquí hay un ejemplo del uso de la primera sintaxis:
SELECT ADDDATE('2021-05-01', 1);
Resultado:
+--------------------------+ | ADDDATE('2021-05-01', 1) | +--------------------------+ | 2021-05-02 | +--------------------------+
También podemos incluir la porción de tiempo si es necesario:
SELECT ADDDATE('2021-05-01 10:00:00', 1);
Resultado:
+-----------------------------------+ | ADDDATE('2021-05-01 10:00:00', 1) | +-----------------------------------+ | 2021-05-02 10:00:00 | +-----------------------------------+
Aquí hay dos formas alternativas de hacer lo mismo:
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
'2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2";
Resultado:
+---------------------+---------------------+ | Result 1 | Result 2 | +---------------------+---------------------+ | 2021-05-02 10:00:00 | 2021-05-02 10:00:00 | +---------------------+---------------------+
Ejemplo:sintaxis 2
Aquí hay un ejemplo del uso de la segunda sintaxis:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Resultado:
+-------------------------------------------------+ | ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR) | +-------------------------------------------------+ | 2021-05-31 11:00:00 | +-------------------------------------------------+
Esta sintaxis nos permite agregar otras unidades a la fecha (es decir, no solo los días). Aquí, agregué una hora a la fecha, pero podría haber agregado fácilmente minutos, segundos, meses, días, años, etc. Continúe leyendo para ver ejemplos.
Aquí hay dos métodos alternativos para lograr el mismo resultado que el ejemplo anterior:
SELECT
DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
'2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2";
Resultado:
+---------------------+---------------------+ | Result 1 | Result 2 | +---------------------+---------------------+ | 2021-05-31 11:00:00 | 2021-05-31 11:00:00 | +---------------------+---------------------+
Intervalos negativos
Proporcionar un intervalo negativo resta esa cantidad de la fecha.
Ejemplo:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Resultado:
+--------------------------------------------------+ | ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR) | +--------------------------------------------------+ | 2021-05-31 09:00:00 | +--------------------------------------------------+
Otras Unidades
Aquí hay un ejemplo que agrega un intervalo de 1 a las distintas unidades de fecha y hora:
SELECT
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Resultado (usando salida vertical):
YEAR: 2022-05-01 10:00:00 MONTH: 2021-06-01 10:00:00 DAY: 2021-05-02 10:00:00 HOUR: 2021-05-01 11:00:00 MINUTE: 2021-05-01 10:01:00 SECOND: 2021-05-01 10:00:01 MICROSECOND: 2021-05-01 10:00:00.000001
Unidades compuestas
Aquí hay un ejemplo que usa unidades compuestas:
SELECT
ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
ADDDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Resultado:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+
Fechas nulas
Pasando null
para la fecha devuelve null
:
SELECT ADDDATE(null, INTERVAL 1 YEAR);
Resultado:
+--------------------------------+ | ADDDATE(null, INTERVAL 1 YEAR) | +--------------------------------+ | NULL | +--------------------------------+
Argumento faltante
Llamando a ADDDATE()
con el número incorrecto de argumentos, o sin pasar ningún argumento da como resultado un error:
SELECT ADDDATE();
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1