SetISOWeek

Return

Return Type
tinyint

Parameters

Parameter Parameter Type Mode Description
@dt smalldatetime IN

Definition

Copy


        -- a function to yield the same week number as the ISO standard
        CREATE FUNCTION [dbo].[SetISOWeek] 
        ( 
            @dt SMALLDATETIME 
        ) 
        RETURNS TINYINT 
        AS 
        BEGIN 
            DECLARE @ISOweek TINYINT 

            SET @ISOweek = DATEPART(WEEK,@dt)+1 
                -DATEPART(WEEK,RTRIM(YEAR(@dt))+'0104'

            IF @ISOweek = 0 
            BEGIN 
                SET @ISOweek = dbo.SetISOWeek 
                ( 
                    RTRIM(YEAR(@dt)-1)+'12'+RTRIM(24+DAY(@dt)) 
                ) + 1 
            END 

            IF MONTH(@dt) = 12 AND DAY(@dt)-DATEPART(DW,@dt) >= 28 
            BEGIN 
                SET @ISOweek=1 
            END 

            RETURN(@ISOweek
        END