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

Come funziona DAYOFWEEK() in MariaDB

In MariaDB, DAYOFWEEK() è una funzione di data e ora incorporata che restituisce il giorno della settimana da una determinata data.

Accetta un argomento, che è la data da cui vuoi estrarre il giorno della settimana.

Restituisce il giorno come numero. La numerazione degli indici aderisce allo standard ODBC (1 =domenica, 2 =lunedì, ecc.). Questo è in contrasto con WEEKDAY() , dove 0 =lunedì, 1 =Martedì, ecc.

Sintassi

La sintassi è questa:

DAYOFWEEK(date)

Dove date è la data da cui ricavare il giorno.

Esempio

Ecco un esempio:

SELECT DAYOFWEEK('2030-01-25');

Risultato:

+-------------------------+
| DAYOFWEEK('2030-01-25') |
+-------------------------+
|                       6 |
+-------------------------+

Rispetto al nome del giorno

Eccone un altro, insieme a DAYNAME() per restituire il nome del giorno:

SELECT 
    DAYOFWEEK('2030-01-20'),
    DAYNAME('2030-01-20');

Risultato:

+-------------------------+-----------------------+
| DAYOFWEEK('2030-01-20') | DAYNAME('2030-01-20') |
+-------------------------+-----------------------+
|                       1 | Sunday                |
+-------------------------+-----------------------+

Come accennato, la numerazione dell'indice inizia da 1 per domenica.

Ecco sabato:

SELECT 
    DAYOFWEEK('2030-01-19'),
    DAYNAME('2030-01-19');

Risultato:

+-------------------------+-----------------------+
| DAYOFWEEK('2030-01-19') | DAYNAME('2030-01-19') |
+-------------------------+-----------------------+
|                       7 | Saturday              |
+-------------------------+-----------------------+

Valori di data e ora

Funziona anche con i valori datetime:

SELECT DAYOFWEEK('2030-01-24 10:30:45');

Risultato:

+----------------------------------+
| DAYOFWEEK('2030-01-24 10:30:45') |
+----------------------------------+
|                                5 |
+----------------------------------+

Zero giorni

Zero giorni risultano null .

Esempio:

SELECT DAYOFWEEK('2030-00-00');

Risultato:

+-------------------------+
| DAYOFWEEK('2030-00-00') |
+-------------------------+
|                    NULL |
+-------------------------+

Date numeriche

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

Esempio

SELECT DAYOFWEEK(20300125);

Risultato:

+---------------------+
| DAYOFWEEK(20300125) |
+---------------------+
|                   6 |
+---------------------+

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

SELECT DAYOFWEEK(300125);

Risultato:

+-------------------+
| DAYOFWEEK(300125) |
+-------------------+
|                 6 |
+-------------------+

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

SELECT DAYOFWEEK(20300135);

Risultato:

+---------------------+
| DAYOFWEEK(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 
    DAYOFWEEK('2030/01/25'),
    DAYOFWEEK('2030,01,25'),
    DAYOFWEEK('2030:01:25'),
    DAYOFWEEK('2030;01!25');

Risultato (usando l'output verticale):

DAYOFWEEK('2030/01/25'): 6
DAYOFWEEK('2030,01,25'): 6
DAYOFWEEK('2030:01:25'): 6
DAYOFWEEK('2030;01!25'): 6

Data attuale

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

SELECT 
    NOW(),
    DAYOFWEEK(NOW());

Risultato:

+---------------------+------------------+
| NOW()               | DAYOFWEEK(NOW()) |
+---------------------+------------------+
| 2021-05-15 09:17:44 |                7 |
+---------------------+------------------+

Argomenti non validi

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

SELECT DAYOFWEEK('Homer');

Risultato:

+--------------------+
| DAYOFWEEK('Homer') |
+--------------------+
|               NULL |
+--------------------+

Argomento mancante

Chiamando DAYOFWEEK() con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:

SELECT DAYOFWEEK();

Risultato:

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

E un altro esempio:

SELECT DAYOFWEEK('2030-01-25', '2045-05-08');

Risultato:

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