In MariaDB, DAYOFMONTH()
è una funzione di data e ora incorporata che restituisce il giorno del mese da una determinata data.
Accetta un argomento, che è la data da cui vuoi estrarre il giorno del mese.
Il risultato è nell'intervallo 1
a 31
. Tuttavia, se la data ha una parte zero giorni (ad esempio '0000-00-00'
o '2021-00-00'
), il risultato è 0
.
Sintassi
La sintassi è questa:
DAYOFMONTH(date)
Dove date
è la data da cui estrarre il giorno.
Esempio
Ecco un esempio:
SELECT DAYOFMONTH('2030-01-25');
Risultato:
+--------------------------+ | DAYOFMONTH('2030-01-25') | +--------------------------+ | 25 | +--------------------------+
Valori di data e ora
Funziona anche con i valori datetime:
SELECT DAYOFMONTH('2030-01-25 10:30:45');
Risultato:
+-----------------------------------+ | DAYOFMONTH('2030-01-25 10:30:45') | +-----------------------------------+ | 25 | +-----------------------------------+
Zero giorni
Ecco un esempio che utilizza un giorno zero nella data:
SELECT DAYOFMONTH('2030-00-00');
Risultato:
+--------------------------+ | DAYOFMONTH('2030-00-00') | +--------------------------+ | 0 | +--------------------------+
Date numeriche
È anche possibile trasmettere le date come numero, purché abbia senso come data.
Esempio
SELECT DAYOFMONTH(20300125);
Risultato:
+----------------------+ | DAYOFMONTH(20300125) | +----------------------+ | 25 | +----------------------+
O anche il seguente (che utilizza un anno a due cifre):
SELECT DAYOFMONTH(300125);
Risultato:
+--------------------+ | DAYOFMONTH(300125) | +--------------------+ | 25 | +--------------------+
Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:
SELECT DAYOFMONTH(20300135);
Risultato:
+----------------------+ | DAYOFMONTH(20300135) | +----------------------+ | NULL | +----------------------+
Altri delimitatori
È possibile utilizzare altri delimitatori per la data. MariaDB è abbastanza clemente quando si tratta di delimitatori sulle date. Ecco alcuni validi esempi:
SELECT
DAYOFMONTH('2030/01/25'),
DAYOFMONTH('2030,01,25'),
DAYOFMONTH('2030:01:25'),
DAYOFMONTH('2030;01!25');
Risultato (usando l'output verticale):
DAYOFMONTH('2030/01/25'): 25 DAYOFMONTH('2030,01,25'): 25 DAYOFMONTH('2030:01:25'): 25 DAYOFMONTH('2030;01!25'): 25
Data attuale
Possiamo passare NOW()
come argomento data per utilizzare la data corrente:
SELECT
NOW(),
DAYOFMONTH(NOW());
Risultato:
+---------------------+-------------------+ | NOW() | DAYOFMONTH(NOW()) | +---------------------+-------------------+ | 2021-05-13 09:02:41 | 13 | +---------------------+-------------------+
Argomenti non validi
Quando viene passato un argomento non valido, DAYOFMONTH()
restituisce null
:
SELECT DAYOFMONTH('Homer');
Risultato:
+---------------------+ | DAYOFMONTH('Homer') | +---------------------+ | NULL | +---------------------+
Argomento mancante
Chiamando DAYOFMONTH()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT DAYOFMONTH();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFMONTH'
E un altro esempio:
SELECT DAYOFMONTH('2030-01-25', '2045-05-08');
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFMONTH'