IT / / 2023. 5. 24. 18:10

[Oracle] 오라클 TRUNC 날짜 with 분기말, 분기초 구하기

TRUNC 함수는 기본적으로 절사(내림) 하기 위해서 사용합니다.

함수의 인자로 숫자뿐만 아니라 날짜, 시간, 요일 등을 사용할 수 있어 다양하게 활용할 수 있습니다.

 

반응형

 

    기본 문법

    TRUNC(arg1, arg2)

    ** arg1: 숫자, 날짜, 시간, 요일 등 절사의 대상이 되는 기본 값
    ** arg2: 양수(소수점 오른쪽에 남는 유효 자릿수), 0(기본값, 소수점 아래 버림), 음수(소수점 왼쪽으로 잘린 유효  자릿수)

     

    TRUNC(숫자)

    SELECT TRUNC(123.456, 2 ) AS "양수" /*123.45*/
         , TRUNC(123.456, 0 ) AS "0"   /*123*/
         , TRUNC(123.456, -2) AS "음수" /*100*/
         , TRUNC(123.456    ) AS "생략" /*123*/
      FROM DUAL

    결과

    TRUNC(날짜 및 시간)

    SELECT 
           TRUNC(SYSDATE, 'YEAR' ) AS YEAR  /* 년 밑으로 자르기 */
         , TRUNC(SYSDATE, 'MONTH') AS MONTH /* 월 밑으로 자르기 */
         , TRUNC(SYSDATE, 'DD'   ) AS DD    /* 일 밑으로 자르기 */
         , TRUNC(SYSDATE, 'DAY'  ) AS DAY   /* 요일 초기화(지난일요일) */
         , TRUNC(SYSDATE, 'HH24' ) AS HH24  /* 시 밑으로 자르기 */
         , TRUNC(SYSDATE, 'MI'   ) AS MI    /* 분 밑으로 자르기 */
      FROM DUAL

    결과

    TRUNC with 분기말, 분기초 등 날짜 계산

    SELECT TRUNC(SYSDATE, 'YY')   AS YY /*같은 연도의 01월 01일 */
         , TRUNC(SYSDATE, 'Q')    AS Q  /*분기의 첫월 01일*/
         , TRUNC(SYSDATE, 'MM')   AS MM /*YYYY년 MM월 01일*/
         , TRUNC(SYSDATE, 'WW')   AS WW /*SYSDATE가 속하는 주에서 같은 연도 1월1일의 요일과 같은 요일의 일자*/
         , TRUNC(SYSDATE, 'IW')   AS IW /*SYSDATE가 속하는 주에서 월요일의 일자*/
         , TRUNC(SYSDATE, 'W')    AS W  /*SYSDATE가 속하는 주에서 같은 월 1일의 요일과 같은 요일의 일자*/
         , TRUNC(SYSDATE, 'Q')-1  AS BQE /*전 분기 말일*/
         , ADD_MONTHS(TRUNC(SYSDATE, 'Q'),-3) AS BQS /*전 분기초 1일*/
      FROM DUAL

    결과

    반응형

     

    마무리...

    기본적인 숫자 외에도 날짜 타입의 다양한 포맷을 이용하면

    날짜 계산을 조금 더 쉽게 할 수 있을 것 같네요~ㅎ

    • 네이버 블로그 공유
    • 네이버 밴드 공유
    • 페이스북 공유
    • 카카오스토리 공유