MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona LAST_DAY() in MariaDB

In MariaDB, LAST_DAY() è una funzione di data e ora incorporata che restituisce l'ultimo giorno del mese per una determinata data.

Accetta un argomento, che è la data per la quale vuoi trovare l'ultimo giorno del mese.

Sintassi

La sintassi è questa:

LAST_DAY(date)

Dove date è l'espressione di data per la quale vuoi trovare l'ultimo giorno del mese.

Esempio

Ecco un esempio:

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

Risultato:

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

In questo caso, stiamo usando una data a febbraio. A quanto pare, febbraio ha 28 giorni in quell'anno.

Ecco cosa succede se incrementiamo la data all'anno bisestile successivo:

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

Risultato:

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

Valori di data e ora

Funziona anche con i valori datetime:

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

Risultato:

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

Zero date

Le date zero risultano null .

Esempio:

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

Risultato:

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

Date numeriche

È anche possibile trasmettere le date come numero, purché abbia senso come data.

Esempio

SELECT LAST_DAY(20301125);

Risultato:

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

O anche il seguente (che utilizza un anno a due cifre):

SELECT LAST_DAY(301125);

Risultato:

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

Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:

SELECT LAST_DAY(20301135);

Risultato:

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

Possiamo controllare l'avviso in questo modo:

SHOW WARNINGS;

Risultato:

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

Altri delimitatori

È possibile utilizzare altri delimitatori per la data. MariaDB è abbastanza clemente quando si tratta di delimitatori sulle date. Ecco alcuni validi esempi:

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

Risultato (usando l'output verticale):

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

Data attuale

Possiamo passare NOW() come argomento datetime per utilizzare la data corrente:

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

Risultato:

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

Argomenti non validi

Quando viene passato un argomento non valido, LAST_DAY() restituisce null :

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

Risultato:

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

Controlla l'avviso:

SHOW WARNINGS;

Risultato:

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

Argomento mancante

Chiamando LAST_DAY() con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:

SELECT LAST_DAY();

Risultato:

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

E un altro esempio:

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

Risultato:

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