DBMS/Oracle

Oracle) 오늘 기준 특정 날짜 가져오기

소소한 늙은 개발자의 메모장 2026. 8. 25. 16:02
반응형

Oracle 오늘 기준 특정 날짜 가져오기

오늘 기준 이전 3년 YEAR목록 가져오기

SELECT TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')) - LEVEL)  AS YYYY 
FROM DUAL 
CONNECT BY LEVEL <= 3

오늘 기준 +5일 DAY목록 가져오기 (오늘 제외)

 SELECT 
    (SYSDATE + LEVEL) AS DT_CAL, 
    TO_CHAR(SYSDATE + LEVEL, 'YYYYMMDD')  AS YYYYMMDD, 
    TO_CHAR(SYSDATE + LEVEL, 'YYYY-MM-DD')  AS DISPLAY_DATE 
FROM DUAL 
CONNECT BY LEVEL <= 5

오늘 기준 +5일 DAY목록 가져오기 (오늘 포함)

SELECT 
    (SYSDATE + LEVEL - 1) AS DT_CAL, 
    TO_CHAR(SYSDATE + LEVEL - 1, 'YYYYMMDD')  AS YYYYMMDD, 
    TO_CHAR(SYSDATE + LEVEL - 1, 'YYYY-MM-DD')  AS DISPLAY_DATE 
FROM DUAL 
CONNECT BY LEVEL <= 6

오늘 기준 WORKING DAY+5일 DAY목록 가져오기 (오늘 제외)

테이블 예시

  • TABLE : CALENDAR_TB
  • COLUMMN
    • YYYYMMDD VARCHAR2(8)
    • HOLIDAY_CD VARCHAR2(1) -- W: Woring Day(작업일)
SELECT
    TO_DATE(T.YYYYMMDD, 'YYYYMMDD') AS DT_CAL,
    T.YYYYMMDD                                             AS YYYYMMDD,
    TO_CHAR(TO_DATE(T.YYYYMMDD, 'YYYYMMDD'), 'YYYY-MM-DD') AS DISPLAY_DATE
    FROM
        (
            SELECT
                CAL.YYYYMMDD AS YYYYMMDD,
                ROW_NUMBER() OVER( ORDER BY CAL.YYYYMMDD ASC ) AS RN
            FROM
                CALENDAR_TB CAL
            WHERE
            	CAL.HOLIDAY_CD = 'W'
                AND CAL.YYYYMMDD BETWEEN TO_CHAR(SYSDATE + 1, 'YYYYMMDD') AND TO_CHAR(SYSDATE + 30, 'YYYYMMDD')
        ) T
    WHERE T.RN <= 5

 

반응형