Bien, tengo un informe que hace una comparación esta semana contra la semana pasada y nuestro cliente notó que sus datos eran "originales". Tras una investigación adicional, descubrimos que no funcionaba correctamente de acuerdo con las normas ISO. Ejecuté este script como un caso de prueba.
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')
Cuando corrí obtuve estos resultados.
Pensé que esto era peculiar, así que investigué un poco más y descubrí que SQL Server cuenta el 1 de enero como la primera semana del año, donde ISO cuenta el primer domingo de enero como la primera semana del año.
La pregunta entonces termina siendo doble. Pregunta 1 ¿por qué es esto? Pregunta 2 ¿hay alguna forma de cambiar esto para que no tenga que modificar todo mi código para usarlo en ISO_Week
todas partes?