- Kategorien:
TRUNC¶
Schneidet DATE-, TIME- oder TIMESTAMP-Werte mit der angegebenen Genauigkeit ab. Wenn Sie einen Zeitstempel zum Beispiel auf das Quartal kürzen, wird der Zeitstempel zurückgegeben, der Mitternacht des ersten Tages im Quartal des ursprünglichen Zeitstempels entspricht.
Diese Funktion bietet eine alternative Syntax für DATE_TRUNC, indem die beiden Argumente umgekehrt werden.
Kürzen ist nicht identisch mit Extrahieren. Beispiel:
Wenn Sie einen Zeitstempel mit dieser Funktion 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 mit EXTRACT wird die Quartalsnummer des Jahres im Zeitstempel zurückgegeben.
Bemerkung
Diese Funktion ist überladen. Sie kann auch als numerische Funktion verwendet werden, um numerische Ausdrücke abzurunden.
- Alternativen:
- Siehe auch:
Syntax¶
TRUNC( <date_or_time_expr>, <date_or_time_part> )
Argumente¶
date_or_time_expr
Dieses Argument muss ein Datum, eine Uhrzeit oder einen Zeitstempel ergeben.
date_or_time_part
Dieses Argument muss einer der unter Unterstützte Datums- und Uhrzeitkomponenten aufgeführten Werte sein.
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¶
Wenn
date_or_time_part
den Wertweek
(oder eine seiner Varianten) hat, wird die Ausgabe vom Sitzungsparameter WEEK_START gesteuert. Weitere Details einschließlich Beispiele finden Sie unter Kalenderwochen und Wochentage.
Beispiele¶
Die DATE_TRUNC-Funktionsbeispiele verwenden die Daten in der folgenden Tabelle:
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 |
+------------+----------+-------------------------+
Die folgenden Beispiele zeigen, wie das Datum abgeschnitten wird. In allen Fällen ist der zurückgegebene Wert vom gleichen Datentyp wie der Eingabewert, jedoch mit Nullen für die Teile, wie z. B. Sekundenbruchteile, die abgeschnitten wurden:
Kürzen eines Datums (aus einem Zeitstempel) auf Jahr, Monat und Tag:
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 |
+------------+-------------------+--------------------+------------------+
Kürzen eines Zeitwerts auf die Minute:
SELECT mytime AS "TIME",
TRUNC(mytime, 'minute') AS "TRUNCATED TO MINUTE"
FROM test_date_trunc;
+----------+---------------------+
| TIME | TRUNCATED TO MINUTE |
|----------+---------------------|
| 08:50:48 | 08:50:00 |
+----------+---------------------+
Kürzen eines TIMESTAMP-Werts auf Stunde, Minute und Sekunde:
SELECT mytimestamp AS "TIMESTAMP",
TRUNC(mytimestamp, 'hour') AS "TRUNCATED TO HOUR",
TRUNC(mytimestamp, 'minute') AS "TRUNCATED TO MINUTE",
TRUNC(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 |
+-------------------------+-------------------------+-------------------------+-------------------------+
Gegenüberstellen der Funktion DATE_TRUNC und der Funktion 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 |
+-------------------------+-----------+