- 카테고리:
TRUNCATE, TRUNC¶
DATE, TIME 또는 TIMESTAMP 값을 지정한 전체 자릿수로 자릅니다. 예를 들어, 타임스탬프를 분기로 자르는 경우, 원래 타임스탬프 분기의 첫 번째 날 자정에 해당하는 타임스탬프가 반환됩니다.
이 함수는 두 인자를 반대로 하여 DATE_TRUNC 에 대한 대체 구문을 제공합니다.
TRUNCATE 및 TRUNC 함수는 동의어입니다.
잘림은 추출과 동일하지 않습니다. 예:
이 함수를 사용하여 타임스탬프를 분기로 자르는 경우, 입력 타임스탬프에 대한 분기의 첫 번째 날 자정에 해당하는 타임스탬프가 반환됩니다.
EXTRACT 함수를 사용하여 타임스탬프에서 분기 날짜 부분을 추출하는 경우, 타임스탬프에서 해당 연도의 분기 번호가 반환됩니다.
참고
TRUNC 에 과부하가 걸렸습니다. 소수점 값을 정수로 잘라내는 등 숫자 값과 함께 사용하여 (예: 소수점 값을 정수로 잘라내어) 유효 자릿수 수를 줄입니다. 숫자 TRUNC 에는 필수적 매개 변수와 선택적 매개 변수가 하나씩 있습니다. 날짜/시간 TRUNC 에는 2개의 필수 매개 변수가 있습니다.
- 대체:
- 참고 항목:
구문¶
TRUNC( <date_or_time_expr>, <date_or_time_part> )
인자¶
date_or_time_expr
이 인자는 날짜, 시간 또는 타임스탬프로 평가되어야 합니다.
date_or_time_part
이 인자는 지원되는 날짜 및 시간 부분 에 나열된 값 중 하나여야 합니다.
반환¶
반환된 값은 입력 값과 동일한 형식입니다.
예를 들어, 입력 값이 TIMESTAMP 인 경우, 반환된 값은 TIMESTAMP 입니다.
사용법 노트¶
date_or_time_part
이week
(또는 그 변형)인 경우, 출력은 WEEK_START 세션 매개 변수에 의해 제어됩니다. 예를 포함한 자세한 내용은 달력상의 주 및 요일 섹션을 참조하십시오.TIME 값의 경우 TIME 유형 범위를 벗어난
date_or_time_part
를 지정할 수 없습니다. 예를 들어 TIMESTAMP 유형은 요구 사항에 따라 날짜/시간을 정밀하게 인코딩하므로 TIMESTAMP 값을day
,week
,year
등으로 잘라낼 수 있습니다. 그러나 TIME 값을day
,week
,year
등으로 잘라내려고 하면 오류가 발생합니다.
예¶
다음 예에서는 날짜/시간 값에 대한 TRUNC 또는 TRUNCATE 함수를 보여줍니다. 숫자 값을 잘라내는 예는 TRUNC 의 숫자 형식 섹션을 참조하십시오.
함수 예제에서는 다음 테이블의 데이터를 사용합니다.
CREATE OR REPLACE TABLE test_date_trunc (
mydate DATE,
mytime TIME,
mytimestamp TIMESTAMP);
INSERT INTO test_date_trunc VALUES (
'2024-05-09',
'08:50:48',
'2024-05-09 08:50:57.891 -0700');
SELECT * FROM test_date_trunc;
+------------+----------+-------------------------+
| MYDATE | MYTIME | MYTIMESTAMP |
|------------+----------+-------------------------|
| 2024-05-09 | 08:50:48 | 2024-05-09 08:50:57.891 |
+------------+----------+-------------------------+
다음 예에서는 날짜 잘림을 보여줍니다. 모든 경우에 반환되는 값은 입력 값과 동일한 데이터 타입이지만, 잘린 부분(예: 소수 자리 초)에는 0이 포함됩니다.
DATE 값을 연도, 월, 일로 잘라냅니다.
SELECT mydate AS "DATE",
TRUNC(mydate, 'year') AS "TRUNCATED TO YEAR",
TRUNC(mydate, 'month') AS "TRUNCATED TO MONTH",
TRUNC(mydate, 'day') AS "TRUNCATED TO DAY"
FROM test_date_trunc;
+------------+-------------------+--------------------+------------------+
| DATE | TRUNCATED TO YEAR | TRUNCATED TO MONTH | TRUNCATED TO DAY |
|------------+-------------------+--------------------+------------------|
| 2024-05-09 | 2024-01-01 | 2024-05-01 | 2024-05-09 |
+------------+-------------------+--------------------+------------------+
TIME 값을 분 단위로 잘라냅니다.
SELECT mytime AS "TIME",
TRUNCATE(mytime, 'minute') AS "TRUNCATED TO MINUTE"
FROM test_date_trunc;
+----------+---------------------+
| TIME | TRUNCATED TO MINUTE |
|----------+---------------------|
| 08:50:48 | 08:50:00 |
+----------+---------------------+
TIMESTAMP 값을 시, 분, 초로 잘라냅니다.
SELECT mytimestamp AS "TIMESTAMP",
TRUNCATE(mytimestamp, 'hour') AS "TRUNCATED TO HOUR",
TRUNCATE(mytimestamp, 'minute') AS "TRUNCATED TO MINUTE",
TRUNCATE(mytimestamp, 'second') AS "TRUNCATED TO SECOND"
FROM test_date_trunc;
+-------------------------+-------------------------+-------------------------+-------------------------+
| TIMESTAMP | TRUNCATED TO HOUR | TRUNCATED TO MINUTE | TRUNCATED TO SECOND |
|-------------------------+-------------------------+-------------------------+-------------------------|
| 2024-05-09 08:50:57.891 | 2024-05-09 08:00:00.000 | 2024-05-09 08:50:00.000 | 2024-05-09 08:50:57.000 |
+-------------------------+-------------------------+-------------------------+-------------------------+
TRUNC 함수와 EXTRACT 함수를 대조합니다.
SELECT TRUNC(mytimestamp, 'quarter') AS "TRUNCATED",
EXTRACT('quarter', mytimestamp) AS "EXTRACTED"
FROM test_date_trunc;
+-------------------------+-----------+
| TRUNCATED | EXTRACTED |
|-------------------------+-----------|
| 2024-04-01 00:00:00.000 | 2 |
+-------------------------+-----------+