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

Come funziona DAYOFYEAR() in MariaDB

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'