In MySQL, il YEARWEEK()
la funzione restituisce l'anno e la settimana per una data data. Fornisci la data come argomento e la funzione restituirà il risultato di conseguenza.
Hai anche la possibilità di specificare se iniziare la settimana di domenica o di lunedì e se la settimana deve essere compresa tra 0 e 53 o tra 1 e 53.
Sintassi
Puoi utilizzare uno dei seguenti due moduli:
YEARWEEK(date) YEARWEEK(date,mode)
Dove:
date
è la data da cui desideri restituire il numero dell'anno e della settimana.mode
è un numero che specifica se la settimana deve iniziare domenica o lunedì e se la settimana deve essere compresa tra 0 e 53 o tra 1 e 53. Vedere la tabella seguente per i possibili valori di modalità.
Se non viene specificata alcuna modalità, la modalità è 0
.
Esempio 1 – Utilizzo di base
Ecco un esempio da dimostrare.
SELECT YEARWEEK('2021-01-25') As 'Result';
Risultato:
+--------+ | Result | +--------+ | 202104 | +--------+
Ecco un esempio con una data diversa.
SELECT YEARWEEK('1999-12-25') As 'Result';
Risultato:
+--------+ | Result | +--------+ | 199951 | +--------+
Esempio 2:specificare una modalità
Se non specifichi un secondo argomento, YEARWEEK()
la funzione usa 0
come modalità.
Tuttavia, hai anche la possibilità di fornire un secondo argomento per specificare quale modalità utilizzare. Esempio:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Risultato:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
I possibili valori di modalità sono i seguenti.
Modalità | Primo giorno della settimana | Gamma | La settimana 1 è la prima settimana... |
---|---|---|---|
0 | Domenica | 0-53 | con una domenica di quest'anno |
1 | lunedì | 0-53 | con 4 o più giorni quest'anno |
2 | Domenica | 1-53 | con una domenica di quest'anno |
3 | lunedì | 1-53 | con 4 o più giorni quest'anno |
4 | Domenica | 0-53 | con 4 o più giorni quest'anno |
5 | lunedì | 0-53 | con un lunedì di quest'anno |
6 | Domenica | 1-53 | con 4 o più giorni quest'anno |
7 | lunedì | 1-53 | con un lunedì di quest'anno |
Questi sono gli stessi valori che possono essere utilizzati con WEEK()
funzione.
Una differenza tra queste due funzioni è che WEEK()
function deriva la sua modalità predefinita dal default_week_format
variabile di sistema (il valore predefinito di questa variabile è 0
). YEARWEEK()
d'altra parte, ignora questa impostazione e usa 0
come valore predefinito (indipendentemente dal default_week_format
impostazione).
Esempio 3 – Confronto di modalità
Ecco un rapido confronto di come ottenere risultati diversi a seconda della modalità utilizzata.
I tre esempi seguenti utilizzano lo stesso codice, ma con tre date diverse. Queste date sono consecutive:si verificano il 5, 6 e 7 gennaio. Come puoi vedere, i risultati possono essere molto diversi a seconda della data esatta e della modalità utilizzata.
Data 1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Risultato:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Data 2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Risultato:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Data 3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Risultato:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+