IT/DB

MSSQL 공휴일 제외 영업일 구하는 FUNCTION 만들기

하루콩콩 2024. 1. 10. 11:09
반응형

SQL Server 함수로 다음 영업일 계산하기
이 함수는 날짜를 입력받아 주말과 공휴일을 고려하여 다음 영업일을 반환한다.

공휴일 정보는 holiday_mstr 테이블 정보에 담겨있다고 가정하에 생성했다.

아래 쿼리를 복붙해서 함수를 생성하면 됨

---------------------------------------------------------------------------------------------------------------------------------------------------------

-- 함수 정의:
CREATE FUNCTION dbo.GetNextBusinessDay (@inputDate DATE)
RETURNS DATE
AS
BEGIN
    -- 다음 영업일을 저장할 변수 선언
    DECLARE @nextBusinessDay DATE;

    -- 입력 날짜가 주말(토요일 또는 일요일)인지 확인
    IF DATEPART(WEEKDAY, @inputDate) IN (1, 7)
    BEGIN
        -- 주말인 경우 날짜 조정
        SET @nextBusinessDay = 
            (SELECT 
                CASE 
                    WHEN DATEPART(WEEKDAY, @inputDate) = 1 THEN DATEADD(DAY, 1, @inputDate) -- 일요일
                    WHEN DATEPART(WEEKDAY, @inputDate) = 7 THEN DATEADD(DAY, 2, @inputDate) -- 토요일
                END
            );
    END
    ELSE
    BEGIN
        -- 입력 날짜가 이미 평일인 경우 변경 없이 유지
        SET @nextBusinessDay = @inputDate;
    END;

    -- 다음 영업일이 공휴일인지 확인
    WHILE EXISTS (SELECT 1 FROM holiday_mstr WHERE manage_day = @nextBusinessDay)
    BEGIN
        -- 다음 영업일이 공휴일인 경우 다음 날로 이동
        SET @nextBusinessDay = DATEADD(DAY, 1, @nextBusinessDay);
    END;

    -- 계산된 다음 영업일 반환
    RETURN @nextBusinessDay;
END;

반응형