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