TRUNC

Syntax

TRUNC
(
  expr  IN date [, fmt   IN text]
)
RETURNS date;

TRUNC
(
  expr  IN timestamp without time zone [, fmt   IN text]
)
RETURNS timestamp without time zone;

TRUNC
(
  expr  IN timestamp with time zone [, fmt   IN text]
)
RETURNS timestamp with time zone;

개요

TRUNC 함수는 날짜나 타임스탬프 값에서 하위 단위를 잘라내고, 지정한 포맷 모델에 맞춰 값을 자른(버림) 결과를 반환한다.

즉, 값의 시간 또는 날짜 부분에서 소수점 이하(또는 세부 단위)를 제거하여, 원하는 단위(예: 연, 월, 일 등)까지만 남긴다.

만약 포맷 문자열(fmt)이 제공되지 않으면, 기본적으로 'DDD' (일 단위)로 처리된다.

타임스탬프 버전의 경우, 내부의 시간 정보를 함께 처리하여 시간 단위 이하를 잘라내며, 초 이하 정보는 0으로 설정된다.

파라미터

파라미터
설명

expr

date, timestamp, timestamptz 타입이다; 절삭(Truncation)할 대상 날짜 또는 타임스탬프 값이다. 만약 이 값이 NULL이면 결과 역시 NULL이 된다.

fmt

text 타입이다;

날짜나 타임스탬프 값을 어느 단위까지 절삭할지를 지정하는 포맷 문자열이다. 예를 들어, 'YYYY' (연도), 'MM' (월), 'DDD' (일) 등으로 지정할 수 있다. 이 값이 NULL이면 기본값(예: 'DDD')으로 처리된다.

예제

# 테스트 1
-- 날짜 절삭: '2023-05-15'를 월 단위로 절삭하여, 해당 월의 첫 날을 반환함
SELECT oracle.TRUNC('2023-05-15'::date, 'MONTH');
-- 결과: '2023-05-01'

   trunc    
------------
 2023-05-01
(1 row)

# 테스트 2
-- 날짜 절삭: 포맷 미지정 시, 원래 날짜가 그대로 반환됨
SELECT oracle.TRUNC('2023-05-15'::date);
-- 결과: '2023-05-15'

   trunc    
------------
 2023-05-15\q
 
(1 row)

# 테스트 3
-- 타임스탬프 절삭: '2023-05-15 14:35:20'를 시간 단위로 절삭하여, 분과 초를 제거함
SELECT oracle.TRUNC('2023-05-15 14:35:20'::timestamp, 'HH24');
-- 결과: '2023-05-15 14:00:00'

        trunc        
---------------------
 2023-05-15 14:00:00
(1 row)

# 테스트 4
-- timestamptz 절삭: '2023-05-15 14:35:20+09'의 경우, 포맷 미지정 시 기본 포맷('DDD')으로  절삭됨
SELECT oracle.TRUNC('2023-05-15 14:35:20+09'::timestamptz);
-- 결과: 타임스탬프 값이 절삭된 결과 반환 (일 단위로 절삭)

         trunc          
------------------------
 2023-05-15 00:00:00+09
(1 row)

Last updated