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;
'IT > DB' 카테고리의 다른 글
MSSQL 오류 : (으)로 시작하는 식별자이(가) 너무 깁니다. 최대 길이는 128입니다. (0) | 2024.02.07 |
---|---|
MSSQL 나누기시 정수로 보여질때 (0) | 2024.01.16 |
유형이 다른 쿼리를 사용하려면 연결에 대해 ANSI_NULLS 및 ANSI_WARNINGS 옵션을 설정해야 합 니다. 이렇게 하면 일관된 방식으로 쿼리를 사용할 수 있습니다. 이 옵션을 설정한 다음 쿼리를 다시 실.. (0) | 2023.07.06 |
MSSQL SELECT 값 없을때도 행 나오게 만들기 (0) | 2023.04.11 |
DBEAVER 데이터베이스 연결 (0) | 2023.03.29 |