카테고리:

날짜 및 시간 함수

DATE_TRUNC

DATE, TIME 또는 TIMESTAMP 를 지정한 정밀도로 자릅니다.

잘림은 추출과 동일하지 않습니다. 예:

  • 타임스탬프를 분기로 자르는 경우, 입력 타임스탬프에 대한 분기의 첫 번째 날 자정에 해당하는 타임스탬프가 반환됩니다.

  • 타임스탬프에서 분기 날짜 부분을 추출하는 경우, 타임스탬프에서 해당 연도의 분기 번호가 반환됩니다.

대체:

TRUNC

참고 항목:

DATE_PART , EXTRACT

구문

DATE_TRUNC( <date_or_time_part>, <date_or_time_expr> )
Copy

반환

반환된 값은 입력 값과 동일한 형식입니다.

예를 들어, 입력 값이 TIMESTAMP 인 경우, 반환된 값은 TIMESTAMP 입니다.

사용법 노트

  • date_or_time_part지원되는 날짜 및 시간 부분 에 나열된 값 중 하나여야 합니다.

    date_or_time_partweek (또는 그 변형)인 경우, 출력은 WEEK_START 세션 매개 변수에 의해 제어됩니다. 예를 포함한 자세한 내용은 달력상의 주 및 요일 섹션을 참조하십시오.

  • date_or_time_expr 은 날짜, 시간 또는 타임스탬프일 수 있습니다.

날짜(타임스탬프에서)를 연도, 월, 일로 자릅니다.

SELECT TO_DATE('2015-05-08T23:39:20.123-07:00') AS "DATE1",
       DATE_TRUNC('YEAR', "DATE1") AS "TRUNCATED TO YEAR",
       DATE_TRUNC('MONTH', "DATE1") AS "TRUNCATED TO MONTH",
       DATE_TRUNC('DAY', "DATE1") AS "TRUNCATED TO DAY";
+------------+-------------------+--------------------+------------------+
| DATE1      | TRUNCATED TO YEAR | TRUNCATED TO MONTH | TRUNCATED TO DAY |
|------------+-------------------+--------------------+------------------|
| 2015-05-08 | 2015-01-01        | 2015-05-01         | 2015-05-08       |
+------------+-------------------+--------------------+------------------+
Copy

TIMESTAMP 를 시, 분, 초로 자릅니다. 모든 경우, 반환된 값은 TIMESTAMP 이지만, 잘린 부분(예: 소수 자리 초)에 대해서는 0이 있습니다.

SELECT TO_TIMESTAMP('2015-05-08T23:39:20.123-07:00') AS "TIMESTAMP1",
       DATE_TRUNC('HOUR', "TIMESTAMP1") AS "TRUNCATED TO HOUR",
       DATE_TRUNC('MINUTE', "TIMESTAMP1") AS "TRUNCATED TO MINUTE",
       DATE_TRUNC('SECOND', "TIMESTAMP1") AS "TRUNCATED TO SECOND";
+-------------------------+-------------------------+-------------------------+-------------------------+
| TIMESTAMP1              | TRUNCATED TO HOUR       | TRUNCATED TO MINUTE     | TRUNCATED TO SECOND     |
|-------------------------+-------------------------+-------------------------+-------------------------|
| 2015-05-08 23:39:20.123 | 2015-05-08 23:00:00.000 | 2015-05-08 23:39:00.000 | 2015-05-08 23:39:20.000 |
+-------------------------+-------------------------+-------------------------+-------------------------+
Copy

시간을 분으로 자릅니다.

SELECT TO_TIME('23:39:20.123') AS "TIME1",
       DATE_TRUNC('MINUTE', "TIME1") AS "TRUNCATED TO MINUTE";
+----------+---------------------+
| TIME1    | TRUNCATED TO MINUTE |
|----------+---------------------|
| 23:39:20 | 23:39:00            |
+----------+---------------------+
Copy

잘림과 추출 대조:

SELECT DATE_TRUNC('QUARTER', '2019-08-01 12:34:56.789'::TIMESTAMP_NTZ) AS "TRUNCATED",
       EXTRACT(   'QUARTER', '2019-08-01 12:34:56.789'::TIMESTAMP_NTZ) AS "EXTRACTED";
+-------------------------+-----------+
| TRUNCATED               | EXTRACTED |
|-------------------------+-----------|
| 2019-07-01 00:00:00.000 |         3 |
+-------------------------+-----------+
Copy