[Oracle] 날짜 포맷 관련한 사용법 예시 본문

DB관련/Oracle

[Oracle] 날짜 포맷 관련한 사용법 예시

DB 관련 프로그램을 진행할 경우, 

때때로 날짜와 관련된 쿼리를 사용할 경우가 많다. 

 

하지만 가끔은 그냥 어떤 함수가 있어서

내가 머리 속에서 생각하고 있었던 데이터가 나오도록 짜져있으면 좋겠다는

생각을 가끔 할 경우가 있다. 

 

그래서 날짜 관련한 다양한 예시를 제공하고, 점차 늘려보도록 하겠다.

 


기본적인 사용 예시 (1년기간에 대한 다양한 날짜 포맷)
SELECT
    TO_CHAR(StartDT,'YYYYMMDD') AS YMD
    , TO_CHAR(StartDT,'MON')    AS MONTH_KOR      /* 요일_한글(일~토) */                 
    , TO_CHAR(StartDT,'D')      AS DAY_NUM        /* 요일_숫자반환 : 1일(일)~7(토)  */
    , TO_CHAR(StartDT,'DY')     AS DAY_KOR        /* 요일_한글(일~토) */          
    , TO_CHAR(StartDT,'DAY')    AS DAY_KOR_LONG   /* 요일_한글 (일요일~토요일) */         
    , TO_CHAR(StartDT,'DDD')    AS DAY_COUNT      /* 연간일수 (365일 또는 366일 기준)   */
    , TO_CHAR(StartDT,'WW')     AS WEEK_YEAR      /* 연간주차(53주 기준) */
    , TO_CHAR(StartDT,'IW')     AS WEEK52_YEAR    /* 연간주차(52주 기준) */
    , TO_CHAR(StartDT,'W')      AS WEEK_MONTH     /* 월주차(월내 주차 -> 정확하지 않음) */
    , TO_CHAR(StartDT,'Q')      AS QURTER         /* 분기 (1~4분기) */                  
FROM
    (
        SELECT
            TO_DATE('20240101','YYYYMMDD') + LEVEL - 1 AS StartDT
        FROM
            DUAL
        CONNECT BY LEVEL <= LAST_DAY(TO_DATE('20240101','YYYYMMDD')) - TO_DATE('20240101','YYYYMMDD') + 1 
) A

 


 

월 주차가져오기 (현재 달력에서 보는 주차, 일 ~ 토)
SELECT
    CEIL((TO_NUMBER(SUBSTRB('20240602', -2, 2)) + 7 
        - TO_NUMBER(TO_CHAR(TO_DATE('20240602', 'YYYYMMDD'),'D')))/7) AS WEEK_1
FROM
    DUAL

 


특정월의 주별 시작일과 종료일 구하기
WITH WEEK_TEMP AS
    (
        SELECT
            TO_DATE('20241101', 'YYYYMMDD') SDT
            , LAST_DAY(TO_DATE('20241101', 'YYYYMMDD')) EDT
        FROM
            DUAL)
SELECT
    TO_CHAR(SDT, 'w') IW
    , TO_CHAR(SDT, 'YYYYMMDD') START_DT_W
    , TO_CHAR(SDT + 6, 'YYYYMMDD') END_DT_W
FROM
    (
        SELECT
            TRUNC(SDT, 'iw') + LEVEL * 7 - 7 SDT
        FROM
            WEEK_TEMP
CONNECT BY LEVEL <= (TRUNC(EDT, 'iw') - TRUNC(SDT, 'iw')) / 7 + 1)

 

일단 여기까지 정리하고 추가적으로 나올 때마다 업데이트 하도록 하겠다.

 

 

DB관련/Oracle Related Articles

MORE

Comments