sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona ADD_MONTHS() en MariaDB

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