Função WEEK() do MySQL
A função `WEEK()` do MySQL é usada para extrair o número da semana de uma determinada data. Ele ajuda a organizar e analisar dados com base em intervalos semanais.
Uso
A função `WEEK()` é normalmente usada quando você precisa agrupar ou filtrar registros por semana. Ele retorna um número inteiro que representa o número da semana do ano para uma data especificada.
sql
WEEK(date, [mode])
Nessa sintaxe, `date` é a data da qual você extrairá o número da semana, e `mode` é um argumento opcional que define o dia inicial da semana (por exemplo, domingo ou segunda-feira). Se nenhum modo for especificado, o padrão será o modo 0, em que a semana começa no domingo.
Valores de modo
- 0: A semana começa no domingo. A semana 1 é a primeira semana com um domingo neste ano.
- 1: A semana começa na segunda-feira. Segue o padrão ISO-8601, em que a semana 1 é a primeira semana com pelo menos 4 dias no ano novo.
- 2: A semana começa no domingo. A Semana 1 é a primeira semana com mais da metade de seus dias no ano novo.
- 3: A semana começa na segunda-feira. A Semana 1 é a primeira semana com mais da metade de seus dias no ano novo.
- 4: A semana começa no domingo. A semana 1 é a primeira semana com pelo menos 4 dias no ano novo.
- 5: A semana começa na segunda-feira. A semana 1 é a primeira semana com uma segunda-feira neste ano.
- 6: A semana começa no sábado. A semana 1 é a primeira semana com um sábado neste ano.
- 7: A semana começa no domingo. A semana 1 é a primeira semana com um domingo neste ano.
Exemplos
1. Extração básica da semana
sql
SELECT WEEK('2023-10-04');
Este exemplo retorna o número da semana da data `2023-10-04`. Por padrão, a semana começa no domingo.
2. Extração de semana com modo
sql
SELECT WEEK('2023-10-04', 1);
Aqui, a função retorna o número da semana com um modo de `1`, o que significa que a semana começa na segunda-feira, de acordo com o padrão ISO-8601.
3. Usando WEEK() em uma consulta
sql
SELECT COUNT(*)
FROM orders
WHERE WEEK(order_date) = WEEK(CURDATE());
Esse exemplo conta o número de pedidos feitos na semana atual, utilizando `WEEK()` para comparar o número da semana de `order_date` com o número da semana da data atual.
Dicas e práticas recomendadas
- Escolha o modo correto. Use o argumento `mode` para alinhar-se à sua lógica comercial, especialmente ao lidar com dados internacionais.
- Cálculos semanais consistentes. Use o mesmo `mode` em todas as suas consultas para manter a consistência nos cálculos semanais.
- Considerações sobre o desempenho. Ao usar `WEEK()` em cláusulas `WHERE`, considere indexar a coluna de data para melhorar o desempenho da consulta.
- Manuseio de semanas em um período de dois anos. Esteja ciente de que modos diferentes lidam com semanas que abrangem dois anos de forma diferente; certifique-se de que sua escolha de modo reflita como você deseja que essas semanas sejam tratadas.
- Combine com outras funções de data. Use `WEEK()` juntamente com funções como `YEAR()` para uma análise de dados mais granular baseada no tempo.
- Considere os fusos horários. Tenha em mente como os fusos horários podem afetar os cálculos de data se o seu conjunto de dados incluir dados internacionais.