Ok, então eu tenho um relatório que faz uma comparação desta semana com a semana passada e nosso cliente percebeu que seus dados estavam "descolados". Após uma investigação mais aprofundada, descobrimos que as semanas não estavam funcionando corretamente de acordo com os padrões ISO. Eu executei esse script como um caso de teste.
SET DATEFIRST 1
SELECT DATEPART(WEEK, '3/26/13')
, DATEPART(WEEK, '3/27/12')
, DATEPART(WEEK, '3/20/12')
, DATEPART(WEEK, '1/2/12')
SELECT DATEPART(ISO_WEEK, '3/26/13')
, DATEPART(ISO_WEEK, '3/27/12')
, DATEPART(ISO_WEEK, '3/20/12')
, DATEPART(ISO_WEEK, '1/2/12')
Quando executado, obtive esses resultados.
Eu pensei que isso era peculiar e, portanto, fiz mais algumas pesquisas e descobri que o SQL Server conta em 1º de janeiro como a primeira semana do ano em que a ISO conta no primeiro domingo de janeiro como a primeira semana do ano.
A questão acaba sendo duas vezes. Pergunta 1 por que isso? Pergunta 2: existe alguma maneira de mudar isso, para que eu não precise modificar todo o meu código para usar em ISO_Week
qualquer lugar?