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'