En MariaDB, ADD_MONTHS()
es una función de fecha y hora incorporada que agrega un número determinado de meses a una fecha y devuelve el resultado.
La fecha puede ser un valor de fecha, fecha y hora o marca de tiempo.
Esta función se introdujo en MariaDB 10.6.1 para mejorar la compatibilidad con Oracle. Hay al menos otras 6 formas de agregar meses a una fecha en MariaDB.
Sintaxis
La sintaxis es así:
ADD_MONTHS(date, months)
Donde date
es la fecha y months
es el número de meses para agregarle.
Ejemplo
He aquí un ejemplo:
SELECT ADD_MONTHS('2020-01-01', 3);
Resultado:
+-----------------------------+ | ADD_MONTHS('2020-01-01', 3) | +-----------------------------+ | 2020-04-01 | +-----------------------------+
Restar meses
Para restar meses de una fecha, use un valor negativo para el segundo argumento.
Ejemplo:
SELECT ADD_MONTHS('2020-01-01', -3);
Resultado:
+------------------------------+ | ADD_MONTHS('2020-01-01', -3) | +------------------------------+ | 2019-10-01 | +------------------------------+
Contexto numérico
La fecha se puede proporcionar en forma numérica si es necesario:
SELECT ADD_MONTHS(20200101, 3);
Resultado:
+-------------------------+ | ADD_MONTHS(20200101, 3) | +-------------------------+ | 2020-04-01 | +-------------------------+
Fechas no válidas
Si la fecha no es válida, ADD_MONTHS()
devuelve null
con una advertencia:
SELECT ADD_MONTHS('2020-01-51', 3);
Resultado:
+-----------------------------+ | ADD_MONTHS('2020-01-51', 3) | +-----------------------------+ | NULL | +-----------------------------+ 1 row in set, 1 warning (0.003 sec)
Revisemos la advertencia:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Argumentos nulos
ADD_MONTHS()
devuelve null
si algún argumento es null
:
SELECT ADD_MONTHS('2020-01-01', null);
Resultado:
+--------------------------------+ | ADD_MONTHS('2020-01-01', null) | +--------------------------------+ | NULL | +--------------------------------+
Número de argumentos no válido
Pasar un número no válido de argumentos da como resultado un error:
SELECT ADD_MONTHS(3);
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