Abaixo estão 5 funções que permitem retornar o número da semana de uma data no MariaDB. Quatro retornam apenas a semana e um retorna a semana e o ano combinados.
A WEEK()
Função
A
WEEK()
função retorna a semana para uma determinada data. Exemplo:
SELECT WEEK('2023-07-25');
Resultado:
+--------------------+ | WEEK('2023-07-25') | +--------------------+ | 30 | +--------------------+
A
WEEK()
A função aceita um segundo argumento opcional para especificar o modo. O resultado real que você obtém dessa função dependerá do modo que está sendo usado. Se o argumento mode for omitido, o valor do default_week_format
variável de sistema é usada. Veja como
WEEK()
Funciona no MariaDB para saber mais sobre os modos e exemplos de cada um. O EXTRACT()
Função
O
EXTRACT
()
A função permite extrair uma unidade especificada da data. Portanto, você pode usá-lo para extrair a semana (assim como outras unidades) da data. Exemplo:
SELECT EXTRACT(WEEK FROM '2023-07-25');
Resultado:
+---------------------------------+ | EXTRACT(WEEK FROM '2023-07-25') | +---------------------------------+ | 30 | +---------------------------------+
O DATE_FORMAT()
Função
O
DATE_FORMAT()
A função permite que você formate uma data com base em uma string de formato. A string de formato especifica como a data deve ser formatada. Você pode, portanto, usar esta função para retornar a semana (assim como qualquer outra unidade) da data. Existem várias opções para retornar o número da semana, dependendo do dia em que a semana começa, etc.
Aqui está um exemplo que retorna a semana de várias formas:
SELECT
DATE_FORMAT('2023-01-01', '%U') AS "%U",
DATE_FORMAT('2023-01-01', '%u') AS "%u",
DATE_FORMAT('2023-01-01', '%V') AS "%V",
DATE_FORMAT('2023-01-01', '%v') AS "%v";
Resultado:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 01 | 00 | 01 | 52 | +------+------+------+------+
Aqui está uma descrição de cada um desses especificadores de formato:
Especificador de formato | Descrição |
---|---|
%U | Número da semana (00-53), quando o primeiro dia da semana é domingo. |
%u | Número da semana (00-53), quando o primeiro dia da semana é segunda-feira. |
%V | Número da semana (01-53), quando o primeiro dia da semana é domingo. Usado com %X . |
%v | Número da semana (01-53), quando o primeiro dia da semana é segunda-feira. Usado com %x . |
E aqui está uma descrição de
%X
e %x
conforme indicado na tabela acima:Especificador de formato | Descrição |
---|---|
%X | Ano com 4 dígitos quando o primeiro dia da semana é domingo. Usado com %V . |
%x | Ano com 4 dígitos quando o primeiro dia da semana é segunda-feira. Usado com %v . |
Podemos combinar especificadores de formato para retornar o ano e a semana juntos, se necessário:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Resultado:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Observe que o número da semana nem sempre refletirá os exemplos acima – depende da data real que está sendo usada.
Vamos adiantar a data um ano:
SELECT
DATE_FORMAT('2024-01-01', '%U') AS "%U",
DATE_FORMAT('2024-01-01', '%u') AS "%u",
DATE_FORMAT('2024-01-01', '%V') AS "%V",
DATE_FORMAT('2024-01-01', '%v') AS "%v";
Resultado:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 00 | 01 | 53 | 01 | +------+------+------+------+
Desta vez, obtemos um conjunto diferente de resultados.
Veja o que acontece quando avançamos no ano:
SELECT
DATE_FORMAT('2024-12-12', '%U') AS "%U",
DATE_FORMAT('2024-12-12', '%u') AS "%u",
DATE_FORMAT('2024-12-12', '%V') AS "%V",
DATE_FORMAT('2024-12-12', '%v') AS "%v";
Resultado:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 49 | 50 | 49 | 50 | +------+------+------+------+
Como você pode ver, retornar o número da semana nem sempre é tão claro quanto gostaríamos.
Veja Strings de Formato MariaDB para uma lista completa de strings/especificadores de formato que podem ser usados com
DATE_FORMAT()
. A YEARWEEK()
Função
É possível obter a semana e ano de uma só vez. O
YEARWEEK()
A função retorna o ano e a semana de uma determinada data. Exemplo:
SELECT YEARWEEK('2023-01-01');
Resultado:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
O ano no resultado pode ser diferente do ano no argumento de data para a primeira e a última semana do ano.
Aqui está o que acontece se avançarmos um ano:
SELECT YEARWEEK('2024-01-01');
Resultado:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
Assim como o
WEEK()
função, a função YEARWEEK()
A função aceita um segundo argumento opcional para especificar o modo. O resultado real que você obtém dessa função dependerá do modo que está sendo usado. Se o argumento mode for omitido, o valor do default_week_format
variável de sistema é usada. Veja como
YEARWEEK()
Funciona no MariaDB para saber mais sobre os modos e exemplos de cada um.