DataBase/Oracle

[ORACLE]소수점, 날짜 자르는 TRUNC 함수

DevStory 2021. 5. 16.

TRUNC Function

TRUNC(n1 [, n2 ])

숫자 또는 날짜 값을 자르는 함수입니다.

TRUNC 함수는 숫자 또는 날짜 두 가지 데이터 타입에 대해 동작을 하며, 데이터 타입에 따라 다르게 동작을 합니다.


숫자형

TRUNC( number [, decimal] )

소수점 위치(decimal)의 값을 잘라 버린 숫자(number)의 값을 반환합니다.

 

매개변수

number

- 잘릴 숫자 값입니다.

 

decimal

- 생략되면 number는 0 자리로 잘립니다.(=정수가 반환됩니다.)

- 자를 소수점 이하 자릿수입니다.

- 양수이면 오른쪽 자릿수가 잘리고 음수이면 왼쪽 자릿수가 잘립니다.


Example Data

WITH TEMP AS ( 
    SELECT 1234.5678 AS COL 
      FROM DUAL 
) 
SELECT COL 
     , TRUNC(COL)     -- 정수 반환 TRUNC(COL, 0)과 동일함
     , TRUNC(COL, 1)  -- 1번째 위치의 소수점 절사
     , TRUNC(COL, 2)  -- 2번째 위치의 소수점 절사
     , TRUNC(COL,-1)  -- 1단위 절사
     , TRUNC(COL,-2)  -- 10단위 절사
     , TRUNC(COL, 5)  -- 자릿수 범위 초과
     , TRUNC(COL,-5)  -- 자릿수 범위 초과
  FROM TEMP;


날짜형

TRUNC( date [, format] )

특정 측정 단위(format)로 잘린 날짜를 반환합니다.

 

매개변수

date

- 잘릴 날짜 값입니다.

 

format

- 자르기 위해 적용 할 Format 형식입니다.

- 지정되지 않은 경우 가장 가까운 날짜로 자릅니다.

단위 Format 형식
Year SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y
ISO Year IYYY, IY, I
Quarter Q
Month MONTH, MON, MM, RM
Week WW
Week Number IW
Week W
Day DDD, DD, J
Start day of the week DAY, DY, D
Hour HH, HH12, HH24
Minute MI

[날짜 TRUNC에 사용 가능한 Format]


Example Data

EX 1) 현재 월의 첫날 가져오기

- 현재 2021년 5월 15일이므로 5월의 첫 날인 2021-05-01이 반환됩니다.

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS NOW_DATE
     , TO_CHAR(TRUNC( SYSDATE, 'MM' ), 'YYYY-MM-DD HH24:MI:SS') AS MM_COL
FROM DUAL;


EX 2) 현재 날짜의 분기에 해당되는 첫 날짜 가져오기

- 5월은 2분기이며, 2분기의 첫 날짜는 4월 1일 입니다.

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS NOW_DATE
     , TO_CHAR(TRUNC( SYSDATE, 'Q' ), 'YYYY-MM-DD HH24:MI:SS') AS Q_COL
FROM DUAL;

반응형

댓글