In MariaDB, DAY()
è sinonimo di DAYOFMONTH()
. Restituisce il giorno del mese da una determinata data.
Accetta un argomento, che è la data da cui vuoi restituire 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:
DAY(date)
Dove date
è la data da cui estrarre il giorno.
Esempio
Ecco un esempio:
SELECT DAY('2045-05-18');
Risultato:
+-------------------+ | DAY('2045-05-18') | +-------------------+ | 18 | +-------------------+
Valori di data e ora
Funziona anche con i valori datetime:
SELECT DAY('2045-05-18 01:10:15');
Risultato:
+----------------------------+ | DAY('2045-05-18 01:10:15') | +----------------------------+ | 18 | +----------------------------+
Zero giorni
Ecco un esempio che utilizza un giorno zero nella data:
SELECT DAY('0000-00-00');
Risultato:
+-------------------+ | DAY('0000-00-00') | +-------------------+ | 0 | +-------------------+
Date numeriche
È anche possibile trasmettere le date come numero, purché abbia senso come data.
Esempio
SELECT DAY(20220308);
Risultato:
+---------------+ | DAY(20220308) | +---------------+ | 8 | +---------------+
O anche il seguente (che utilizza un anno a due cifre):
SELECT DAY(220308);
Risultato:
+-------------+ | DAY(220308) | +-------------+ | 8 | +-------------+
Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:
SELECT DAY(220358);
Risultato:
+-------------+ | DAY(220358) | +-------------+ | 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
DAY('2028/12/30'),
DAY('2028,12,30'),
DAY('2028:12:30'),
DAY('2028;12!30');
Risultato (usando l'output verticale):
DAY('2028/12/30'): 30 DAY('2028,12,30'): 30 DAY('2028:12:30'): 30 DAY('2028;12!30'): 30
Data attuale
Possiamo passare NOW()
come argomento data per utilizzare la data corrente:
SELECT
NOW(),
DAY(NOW());
Risultato:
+---------------------+------------+ | NOW() | DAY(NOW()) | +---------------------+------------+ | 2021-05-13 09:41:03 | 13 | +---------------------+------------+
Argomenti non validi
Quando viene passato un argomento non valido, DAY()
restituisce null
:
SELECT DAY('Oops!');
Risultato:
+--------------+ | DAY('Oops!') | +--------------+ | NULL | +--------------+
Argomento mancante
Chiamando DAY()
con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:
SELECT DAY();
Risultato:
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
E un altro esempio:
SELECT DAY('2030-01-25', '2045-05-08');
Risultato:
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 ' '2045-05-08')' at line 1