지식정보
ORACLE 날짜함수 예제1
onggun
2013. 8. 30. 15:43
대출 프로그램 작성 시 상환계획을 임시로 보여주기 위하여 납부일이 휴일인지 여부를 확인하여 목록을 가져오기 위한 쿼리를 기록으로 남깁니다.
매월 25일를 가져오는데 휴일인 경우 익영업일로 가져오기
/*
매월 25일 중 휴일은 성탄절 하루 12월의 휴일은 성탄절 하나.
대체휴일 24, 26일중 휴일은 없음.
*/
SELECT TO_CHAR(TRUNC(S.DT,'MM'),'YYYYMMDD') AS SDT
, CASE
WHEN TO_CHAR(S.DT,'D') IN (1,7) THEN TO_CHAR((S.DT + (2-MOD( TO_CHAR(S.DT,'D') ,7))),'YYYYMMDD')
ELSE TO_CHAR(S.DT,'YYYYMMDD') END AS CDT
FROM (
SELECT CASE WHEN TO_CHAR(D.DT,'MMDD') = '1225' THEN D.DT+1 ELSE D.DT END AS DT
FROM (
SELECT TO_DATE('20130801', 'YYYYMMDD') + LEVEL - 1 AS DT
FROM DUAL
CONNECT BY LEVEL <= TO_DATE('20501231', 'YYYYMMDD') - TO_DATE('20130801', 'YYYYMMDD') + 1
) D
WHERE TO_CHAR(D.DT,'DD') = '25'
) S
좀더 정확하게 구하기 위해서는 달력 테이블을 만들어서 토/일요일을 이외의 휴일정보를 관리해 주어야 한다.