Ultimamente sono stato parecchio impegnato quindi non ho avuto il tempo di mettermi ad imparare come postare gli articoli. Per cui per quanti avessero bisogno posto una funzione di sql server (compatibile dalla versione 2000) che consente di ricavare la settimana a partire da una data:
CREATE function ISOweek(
@date datetime
)
returns smallint
as
begin
declare @ISOweek smallint
select @ISOweek = datepart(week, @date) + 1 - datepart(week, convert(char(4), datepart(year, @date)) + '.01.04')
-- caso particolare: 1-3 gennaio può appartenere all'anno precedente
if (@ISOweek = 0)
select @ISOweek = dbo.ISOweek(convert(char(4), datepart(year, @date) - 1) + '.12.' + convert(char(2), datepart(day, @date) + 24))
-- caso particolare: 29-31 dicembre può appartenere all'anno successivo
if ((datepart(month, @date) = 12) and ((datepart(day, @date) - datepart(weekday, @date)) >= 28))
select @ISOweek = 1
return(@ISOweek)
end
zerocode