WorkaHolic/MSSQL

MSSQL 주에대한 질문

2010. 4. 8. 22:22
반응형
함수를 만들어서 사용하심이 어떻세요 ^^*



CREATE FUNCTION udfBusinessWeek
  (@Date as smalldatetime, @BeginOrEnd as char(1))
RETURNS smalldatetime AS

/*이 함수는 비즈니스 위크를 기준으로 첫째 요일 또는 마지막 요일을 반환한다*/

BEGIN
    DECLARE @Output smalldatetime

    IF @BeginOrEnd = 'B'
         BEGIN
         SET @Output = CASE WHEN DATEPART(dw, @DATE) = 1
                                           THEN DATEADD(d, -6, @DATE)
                                           ELSE DATEADD(d, -DATEPART(dw,
@DATE)+2, @DATE)
                                  END
         END
    ELSE IF @BeginOrEnd = 'E'
         BEGIN
         SET @Output = CASE WHEN DATEPART(dw, @DATE) = 1
                                            THEN @DATE
                                            ELSE DATEADD(d, -DATEPART(dw,
@DATE)+8, @DATE)
                                  END
         END
    RETURN(CONVERT(smalldatetime, CAST(@Output as char(11))))
END

GO


SELECT dbo.udfBusinessWeek(GetDate(), 'B') -- 이번 주 월요일 반환
SELECT dbo.udfBusinessWeek(GetDate(), 'E') -- 다음 주 일요일(Sunday) 반환

[출처] 주에대한 질문|작성자 진카자마


반응형