In MariaDB, DAYOFYEAR()
è una funzione di data e ora incorporata che restituisce il giorno dell'anno da una determinata data.
Accetta un argomento, che è la data da cui vuoi estrarre il giorno dell'anno.
Restituisce il giorno come numero nell'intervallo 1
a 366
.
Sintassi
La sintassi è questa:
DAYOFYEAR(date)
Dove date
è la data da cui ricavare il giorno dell'anno.
Esempio
Ecco un esempio:
SELECT DAYOFYEAR('2030-12-25');
Risultato:
+-------------------------+ | DAYOFYEAR('2030-12-25') | +-------------------------+ | 359 | +-------------------------+
Valori di data e ora
Funziona anche con i valori datetime:
SELECT DAYOFYEAR('2030-02-01 10:30:45');
Risultato:
+----------------------------------+ | DAYOFYEAR('2030-02-01 10:30:45') | +----------------------------------+ | 32 | +----------------------------------+
Zero giorni
Zero giorni risultano null
.
Esempio:
SELECT DAYOFYEAR('2030-00-00');
Risultato:
+-------------------------+ | DAYOFYEAR('2030-00-00') | +-------------------------+ | NULL | +-------------------------+
Date numeriche
È anche possibile trasmettere le date come numero, purché abbia senso come data.
Esempio
SELECT DAYOFYEAR(20301125);
Risultato:
+---------------------+ | DAYOFYEAR(20301125) | +---------------------+ | 329 | +---------------------+
O anche il seguente (che utilizza un anno a due cifre):
SELECT DAYOFYEAR(301125);
Risultato:
+-------------------+ | DAYOFYEAR(301125) | +-------------------+ | 329 | +-------------------+
Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:
SELECT DAYOFYEAR(20300135);
Risultato:
+---------------------+ | DAYOFYEAR(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
DAYOFYEAR('2030/06/25'),
DAYOFYEAR('2030,06,25'),
DAYOFYEAR('2030:06:25'),
DAYOFYEAR('2030;06!25');
Risultato (usando l'output verticale):
DAYOFYEAR('2030/06/25'): 176 DAYOFYEAR('2030,06,25'): 176 DAYOFYEAR('2030:06:25'): 176 DAYOFYEAR('2030;06!25'): 176
Data attuale
Possiamo passare NOW()
come argomento data per utilizzare la data corrente:
SELECT
NOW(),
DAYOFYEAR(NOW());
Risultato:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2021-05-16 09:05:57 | 136 | +---------------------+------------------+
Argomenti non validi
Quando viene passato un argomento non valido, DAYOFYEAR()
restituisce null
:
SELECT DAYOFYEAR('Friday');
Risultato:
+---------------------+ | DAYOFYEAR('Friday') | +---------------------+ | NULL | +---------------------+
Argomento mancante
Chiamando DAYOFYEAR()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT DAYOFYEAR();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'
E un altro esempio:
SELECT DAYOFYEAR('2030-01-25', '2045-05-08');
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'