본문 바로가기
Database/Oracle

[ORACLE] TRUNC() 숫자 절삭 처리 방법과 ROUND()와의 차이점

by Papa Martino V 2025. 6. 5.
728x90

오라클 TRUNC() 숫자 절삭 처리 방법과 ROUND()와의 차이점
[Oracle] TRUNC

 

Oracle SQL에서 숫자나 날짜 데이터를 정밀하게 절삭(버림)할 수 있는 대표적인 함수가 TRUNC()입니다. 이 함수는 금융, 통계, 리포트 작성 등 다양한 분야에서 정제된 데이터를 제공하는 데 매우 유용합니다. 본 글에서는 TRUNC 함수의 문법, 숫자 및 날짜 처리 방식, 실무 예제, ROUND와의 비교까지 폭넓게 다룹니다.

1. TRUNC() 함수란?

TRUNC() 함수는 숫자 또는 날짜를 특정 단위로 자르는 Oracle 내장 함수입니다. 반올림이 아닌 버림이라는 점이 특징입니다.

기본 문법

-- 숫자 절삭
TRUNC(number [, decimal_places])

-- 날짜 절삭
TRUNC(date [, format])

2. 숫자형 TRUNC() 사용법

소수점 이하를 절삭하거나, 특정 자리 수까지만 표시하고 싶을 때 사용됩니다.

예제 1: 소수점 이하 절삭

SELECT TRUNC(123.4567, 2) AS result FROM dual;
-- 결과: 123.45

예제 2: 정수로 절삭

SELECT TRUNC(78.9) AS result FROM dual;
-- 결과: 78

예제 3: 소수점 앞자리 절삭

SELECT TRUNC(5678.91, -2) AS result FROM dual;
-- 결과: 5600

3. 날짜형 TRUNC() 사용법

TRUNC는 날짜 값을 자를 때도 매우 유용하며, 다양한 단위를 기준으로 날짜를 절삭할 수 있습니다.

지원 포맷 예시

  • 'DD': 해당 날짜의 자정 (기본값)
  • 'MM': 해당 월의 1일
  • 'YYYY': 해당 연도의 1월 1일
  • 'D': 주의 시작일 (NLS 설정에 따라 다름)
  • 'HH', 'HH24', 'MI': 시간, 분 단위 절삭

예제 4: 일 단위 절삭

SELECT TRUNC(SYSDATE) AS today_midnight FROM dual;

예제 5: 월 단위 절삭

SELECT TRUNC(TO_DATE('2025-06-14', 'YYYY-MM-DD'), 'MM') AS month_start FROM dual;
-- 결과: 2025-06-01

예제 6: 연 단위 절삭

SELECT TRUNC(DATE '2025-06-14', 'YYYY') AS year_start FROM dual;
-- 결과: 2025-01-01

4. 실무 활용 예제

4-1. 거래 금액 절삭 보고서

SELECT customer_id, TRUNC(total_amount, 0) AS amount_whole
FROM transactions;

4-2. 월별 매출 집계 시 날짜 절삭

SELECT TRUNC(sale_date, 'MM') AS sale_month, SUM(sale_amount)
FROM sales
GROUP BY TRUNC(sale_date, 'MM')
ORDER BY sale_month;

4-3. 시간 단위 로그 절삭

SELECT TRUNC(event_time, 'HH24') AS hour_block, COUNT(*)
FROM system_logs
GROUP BY TRUNC(event_time, 'HH24')
ORDER BY hour_block;

5. TRUNC vs ROUND 차이점

항목 TRUNC() ROUND()
기능 버림 반올림
숫자 처리 지정 소수점 이하 절삭 지정 자리 반올림
날짜 처리 지정 단위 기준 시작 날짜 가장 가까운 날짜

예제 비교

SELECT TRUNC(123.789, 1), ROUND(123.789, 1) FROM dual;
-- 결과: 123.7 , 123.8

6. 오류 방지 팁

  • 두 번째 인자(자릿수/포맷)는 생략 가능하지만 정확하게 지정하는 것이 바람직함
  • 날짜 포맷 문자열은 대소문자 구분 없음
  • 시간 단위 절삭 시 HH 또는 HH24는 정확한 요구사항에 맞춰 선택

7. 함께 사용하면 좋은 함수들

  • ROUND() – 반올림 처리
  • FLOOR(), CEIL() – 내림, 올림 처리
  • TO_DATE(), TO_TIMESTAMP() – 형 변환
  • SYSDATE, SYSTIMESTAMP – 현재 날짜/시간

8. 요약

TRUNC() 함수는 정밀한 절삭 처리를 통해 숫자 및 날짜 데이터를 원하는 수준으로 정제할 수 있도록 도와줍니다. ROUND와의 차이를 잘 이해하고, 다양한 포맷 옵션을 익히면 데이터 집계, 정렬, 그룹핑 등의 실무 작업에서 매우 강력한 도구로 활용할 수 있습니다.

참고자료

728x90