In MariaDB, WEEKOFYEAR()
è una funzione di data e ora incorporata che restituisce la settimana di calendario di una data data come numero nell'intervallo da 1
a 53
.
È l'equivalente dell'utilizzo di WEEK()
funzione in modalità 3, quindi il suo risultato è conforme alla norma ISO 8601:1988.
Accetta un argomento; la data da cui vuoi estrarre la settimana.
Sintassi
La sintassi è questa:
WEEKOFYEAR(date)
Dove date
è l'espressione di data da cui ottenere la settimana di calendario.
Esempio
Ecco un esempio:
SELECT WEEKOFYEAR('2030-01-01');
Risultato:
+--------------------------+ | WEEKOFYEAR('2030-01-01') | +--------------------------+ | 1 | +--------------------------+
È l'equivalente di fare quanto segue:
SELECT WEEK('2030-01-01', 3);
Risultato:
+-----------------------+ | WEEK('2030-01-01', 3) | +-----------------------+ | 1 | +-----------------------+
Valori di data e ora
Il WEEKOFYEAR()
la funzione funziona anche con i valori datetime:
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Risultato:
+-----------------------------------+ | WEEKOFYEAR('2030-08-01 10:30:45') | +-----------------------------------+ | 31 | +-----------------------------------+
Date numeriche
È anche possibile trasmettere le date come numero, purché abbia senso come data.
Esempio
SELECT WEEKOFYEAR(20301125);
Risultato:
+----------------------+ | WEEKOFYEAR(20301125) | +----------------------+ | 48 | +----------------------+
O anche il seguente (che utilizza un anno a due cifre):
SELECT WEEKOFYEAR(301125);
Risultato:
+--------------------+ | WEEKOFYEAR(301125) | +--------------------+ | 48 | +--------------------+
Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:
SELECT WEEKOFYEAR(20301135);
Risultato:
+----------------------+ | WEEKOFYEAR(20301135) | +----------------------+ | NULL | +----------------------+ 1 row in set, 1 warning (0.000 sec)
Ha restituito null
con un avvertimento.
Diamo un'occhiata all'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Altri delimitatori
È possibile utilizzare altri delimitatori per la data. MariaDB è abbastanza clemente quando si tratta di delimitatori sulle date. Ecco alcuni validi esempi:
SELECT
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Risultato (usando l'output verticale):
WEEKOFYEAR('2030/06/25'): 26 WEEKOFYEAR('2030,06,25'): 26 WEEKOFYEAR('2030:06:25'): 26 WEEKOFYEAR('2030;06!25'): 26
Data attuale
Possiamo passare NOW()
come argomento datetime per utilizzare la data corrente:
SELECT
NOW(),
WEEKOFYEAR(NOW());
Risultato:
+---------------------+-------------------+ | NOW() | WEEKOFYEAR(NOW()) | +---------------------+-------------------+ | 2021-05-17 09:42:13 | 20 | +---------------------+-------------------+
Argomenti non validi
Quando viene passato un argomento non valido, WEEKOFYEAR()
restituisce null
:
SELECT WEEKOFYEAR('2030-65-78');
Risultato:
+--------------------------+ | WEEKOFYEAR('2030-65-78') | +--------------------------+ | NULL | +--------------------------+ 1 row in set, 1 warning (0.000 sec)
Mostriamo l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Argomento mancante
Chiamando WEEKOFYEAR()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT WEEKOFYEAR();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'
E un altro esempio:
SELECT WEEKOFYEAR('2030-12-10', 1);
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'