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

Cómo funciona LAST_DAY() en MariaDB

En MariaDB, LAST_DAY() es una función de fecha y hora integrada que devuelve el último día del mes para una fecha determinada.

Acepta un argumento, que es la fecha para la que desea encontrar el último día del mes.

Sintaxis

La sintaxis es así:

LAST_DAY(date)

Donde date es la expresión de fecha para la que desea encontrar el último día del mes.

Ejemplo

He aquí un ejemplo:

SELECT LAST_DAY('2030-02-01');

Resultado:

+------------------------+
| LAST_DAY('2030-02-01') |
+------------------------+
| 2030-02-28             |
+------------------------+

En este caso, estamos usando una fecha en febrero. Resulta que febrero tiene 28 días en ese año.

Esto es lo que sucede si incrementamos la fecha al siguiente año bisiesto:

SELECT LAST_DAY('2032-02-01');

Resultado:

+------------------------+
| LAST_DAY('2032-02-01') |
+------------------------+
| 2032-02-29             |
+------------------------+

Valores de fecha y hora

También funciona con valores de fecha y hora:

SELECT LAST_DAY('2030-02-01 10:30:45');

Resultado:

+---------------------------------+
| LAST_DAY('2030-02-01 10:30:45') |
+---------------------------------+
| 2030-02-28                      |
+---------------------------------+

Cero fechas

Las fechas cero dan como resultado null .

Ejemplo:

SELECT LAST_DAY('0000-00-00');

Resultado:

+------------------------+
| LAST_DAY('0000-00-00') |
+------------------------+
| NULL                   |
+------------------------+

Fechas numéricas

También es posible pasar fechas como un número, siempre que tenga sentido como fecha.

Ejemplo

SELECT LAST_DAY(20301125);

Resultado:

+--------------------+
| LAST_DAY(20301125) |
+--------------------+
| 2030-11-30         |
+--------------------+

O incluso lo siguiente (que usa un año de dos dígitos):

SELECT LAST_DAY(301125);

Resultado:

+------------------+
| LAST_DAY(301125) |
+------------------+
| 2030-11-30       |
+------------------+

Pero debe tener sentido como fecha. Esto es lo que sucede si aumento la parte del día a un día no válido:

SELECT LAST_DAY(20301135);

Resultado:

+--------------------+
| LAST_DAY(20301135) |
+--------------------+
| NULL               |
+--------------------+
1 row in set, 1 warning (0.000 sec)

Podemos comprobar la advertencia de esta manera:

SHOW WARNINGS;

Resultado:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '20301135' |
+---------+------+--------------------------------------+

Otros delimitadores

Puede utilizar otros delimitadores para la fecha. MariaDB es bastante indulgente cuando se trata de delimitadores en fechas. Aquí hay algunos ejemplos válidos:

SELECT 
    LAST_DAY('2030/06/25'),
    LAST_DAY('2030,06,25'),
    LAST_DAY('2030:06:25'),
    LAST_DAY('2030;06!25');

Resultado (usando salida vertical):

LAST_DAY('2030/06/25'): 2030-06-30
LAST_DAY('2030,06,25'): 2030-06-30
LAST_DAY('2030:06:25'): 2030-06-30
LAST_DAY('2030;06!25'): 2030-06-30

Fecha actual

Podemos pasar NOW() como argumento de fecha y hora para usar la fecha actual:

SELECT 
    NOW(),
    LAST_DAY(NOW());

Resultado:

+---------------------+-----------------+
| NOW()               | LAST_DAY(NOW()) |
+---------------------+-----------------+
| 2021-05-18 09:39:01 | 2021-05-31      |
+---------------------+-----------------+

Argumentos no válidos

Cuando se pasa un argumento no válido, LAST_DAY() devuelve null :

SELECT LAST_DAY('2030-65-78');

Resultado:

+------------------------+
| LAST_DAY('2030-65-78') |
+------------------------+
| NULL                   |
+------------------------+
1 row in set, 1 warning (0.000 sec)

Compruebe la advertencia:

SHOW WARNINGS;

Resultado:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2030-65-78' |
+---------+------+----------------------------------------+

Argumento faltante

Llamando a LAST_DAY() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT LAST_DAY();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'

Y otro ejemplo:

SELECT LAST_DAY('2030-12-10', '2031-12-10');

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'