티스토리 뷰

지식정보

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
       

좀더 정확하게 구하기 위해서는 달력 테이블을 만들어서 토/일요일을 이외의 휴일정보를 관리해 주어야 한다. 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday