Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

YEARWEEK() Exemplos – MySQL


No MySQL, o YEARWEEK() A função retorna o ano e a semana de uma determinada data. Você fornece a data como um argumento e a função retornará o resultado de acordo.

Você também tem a opção de especificar se deseja iniciar a semana no domingo ou na segunda-feira e se a semana deve estar no intervalo de 0 a 53 ou 1 a 53.


Sintaxe


Você pode usar um dos dois formulários a seguir:
YEARWEEK(date)
YEARWEEK(date,mode)

Onde:
  • date é a data da qual você deseja que o ano e o número da semana sejam retornados.
  • mode é um número que especifica se a semana deve começar no domingo ou na segunda-feira e se a semana deve estar no intervalo de 0 a 53 ou de 1 a 53. Consulte a tabela abaixo para obter os valores de modo possíveis.

Se nenhum modo for especificado, o modo será 0 .

Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar.
SELECT YEARWEEK('2021-01-25') As 'Result';

Resultado:
+--------+
| Result |
+--------+
| 202104 |
+--------+

Aqui está um exemplo com uma data diferente.
SELECT YEARWEEK('1999-12-25') As 'Result';

Resultado:
+--------+
| Result |
+--------+
| 199951 |
+--------+

Exemplo 2 – Especificar um modo


Se você não especificar um segundo argumento, o YEARWEEK() função usa 0 como o modo.

No entanto, você também tem a opção de fornecer um segundo argumento para especificar qual modo usar. Exemplo:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';

Resultado:
+--------+
| Mode 7 |
+--------+
| 201946 |
+--------+

Os valores de modo possíveis são os seguintes.
Modo Primeiro dia da semana Intervalo A semana 1 é a primeira semana…
0 Domingo 0-53 com um domingo neste ano
1 Segunda-feira 0-53 com 4 ou mais dias este ano
2 Domingo 1-53 com um domingo neste ano
3 Segunda-feira 1-53 com 4 ou mais dias este ano
4 Domingo 0-53 com 4 ou mais dias este ano
5 Segunda-feira 0-53 com uma segunda-feira neste ano
6 Domingo 1-53 com 4 ou mais dias este ano
7 Segunda-feira 1-53 com uma segunda-feira neste ano

Estes são os mesmos valores que podem ser usados ​​com o WEEK() função.

Uma diferença entre essas duas funções é que o WEEK() função deriva seu modo padrão do default_week_format variável do sistema (o valor padrão desta variável é 0 ). YEARWEEK() por outro lado, ignora esta configuração e usa 0 como seu valor padrão (independentemente do default_week_format contexto).

Exemplo 3 – Comparação de Modos


Aqui está uma rápida comparação de como você pode obter resultados diferentes dependendo do modo que está sendo usado.

Os três exemplos a seguir usam o mesmo código, mas com três datas diferentes. Essas datas são consecutivas – ocorrem nos dias 5, 6 e 7 de janeiro. Como você pode ver, os resultados podem ser bem diferentes dependendo da data exata e do modo que está sendo usado.

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';

Resultado:
+--------+--------+--------+--------+--------+--------+--------+--------+
| 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';

Resultado:
+--------+--------+--------+--------+--------+--------+--------+--------+
| 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';

Resultado:
+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 |
+--------+--------+--------+--------+--------+--------+--------+--------+