No PostgreSQL você pode usar o
extract()
função para obter o número da semana de uma data. Você também pode usar o
date_part()
função para fazer a mesma coisa. Exemplo 1:A função extract()
Aqui está um exemplo de uso do
extract()
função para extrair a semana de uma data. SELECT extract(week from date '2020-12-27') AS "Week Number";
Resultado:
Número da semana ------------- 52
Exemplo 2:A função date_part()
Veja como fazer a mesma coisa usando o
date_part()
função. SELECT date_part('week', date '2020-12-27') AS "Número da semana";
Resultado:
Número da semana ------------- 52
Exemplo 3:sobre o sistema de numeração semanal ISO
Se você obtiver resultados que não esperava, pode ser por causa da maneira como a numeração de semanas ISO é definida.
As semanas ISO começam às segundas-feiras e a primeira semana de um ano contém 4 de janeiro daquele ano. Portanto, é possível que as datas do início de janeiro façam parte da 52ª ou 53ª semana do ano anterior e as datas do final de dezembro façam parte da primeira semana do ano seguinte.
Exemplo:
SELECT extract(week from date '2021-01-03') AS "2021-01-03", extract(week from date '2021-01-04') AS "2021-01-04";
Resultado:
2021-01-03 | 2021-01-04 ------------+------------ 53 | 1
Nesse caso, 3 de janeiro de 2021 ainda faz parte da última semana de 2020. A primeira semana de 2021 não começa até 4 de janeiro.
Abaixo está outro exemplo que demonstra uma data no final do ano fazendo parte da primeira semana do ano seguinte.
SELECT extract(week from date '2024-12-29') AS "2024-12-29", extract(week from date '2024-12-30') AS "2024-12-30";
Resultado:
29-12-2024 | 30/12/2024 ------------+------------ 52 | 1
Neste caso, 29 de dezembro de 2024 faz parte da última semana de 2024, mas assim que chegamos a 30 de dezembro, estamos na primeira semana de 2025.