Mysql
 sql >> Database >  >> RDS >> Mysql

YEARWEEK() Esempi – MySQL

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 |
+--------+--------+--------+--------+--------+--------+--------+--------+