SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION Week (@FLTDATE float) RETURNS int AS BEGIN DECLARE @DATE datetime DECLARE @Week int SET @DATE = DATEADD(s,@FLTDATE,'1980') SET @Week= DATEPART(wk,@DATE)+1 -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104') --Special cases: Jan 1-3 may belong to the previous year IF (@Week=0) SET @Week=dbo.Week(DATEDIFF(s,'1980',CAST(DATEPART(yy,@DATE)-1 AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2))))+1 --Special case: Dec 29-31 may belong to the next year IF ((DATEPART(mm,@DATE)=12) AND ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28)) SET @Week=1 RETURN(@Week) END GO