Kategorien:

Datums- und Uhrzeitfunktionen

DATE_TRUNC

Schneidet DATE-, TIME- oder TIMESTAMP-Werte mit der angegebenen Genauigkeit ab.

Beachten Sie, dass Kürzen nicht identisch ist mit Extrahieren. Beispiel:

  • Wenn Sie einen Zeitstempel auf das Quartal kürzen, wird der Zeitstempel zurückgegeben, der der Mitternacht des ersten Tags des Quartals für den Eingabezeitstempel entspricht.

  • Durch Extrahieren der Quartalsdatumskomponente aus einem Zeitstempel wird die Quartalsnummer des Jahres im Zeitstempel zurückgegeben.

Alternativen:

TRUNC

Siehe auch:

DATE_PART, EXTRACT

Syntax

DATE_TRUNC( <date_or_time_part>, <date_or_time_expr> )
Copy

Rückgabewerte

Der zurückgegebene Wert ist vom selben Typ wie der Eingabewert.

Wenn der Eingabewert beispielsweise TIMESTAMP ist, ist der zurückgegebene Wert TIMESTAMP.

Nutzungshinweise

Beispiele

Kürzen eines Datums (aus einem Zeitstempel) auf Jahr, Monat und Tag:

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

Kürzen eines TIMESTAMP-Werts auf Stunde, Minute und Sekunde: Beachten Sie, dass der zurückgegebene Wert in allen Fällen ein TIMESTAMP-Wert ist, jedoch mit Nullen für die Teile, die abgeschnitten wurden (z. B. für Sekundenbruchteile):

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

Kürzen eines Zeitwerts auf die Minute:

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

Vergleichen von Kürzung mit Extraktion:

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