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

posted on giovedì 12 gennaio 2006 12:48 |

Comments

Gravatar
# re: settimane
Posted by JR
on 11/02/2011 00:07
Comments have been closed on this topic.