- Kategorien:
TRUNCATE, 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.
Die Funktionen TRUNCATE und TRUNC sind gleichbedeutend.
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
TRUNC ist überlastet. Die Funktion kann auch bei numerischen Werten verwendet werden, um die Anzahl der signifikanten Ziffern zu reduzieren, z. B. durch Abschneiden eines Dezimalwerts auf eine Ganzzahl. Die numerische TRUNC-Funktion hat einen erforderlichen und einen optionalen Parameter. Die TRUNC-Funktion für Datum/Uhrzeit hat zwei erforderliche Parameter.
- 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.Für TIME-Werte können Sie keinen
date_or_time_part
angeben, der außerhalb des Bereichs des TIME-Typs liegt. Sie können z. B. einen TIMESTAMP-Wert aufday
,week
,year
usw. kürzen, da der TIMESTAMP-Typ Datum/Zeit mit der erforderlichen Genauigkeit kodiert. Wenn Sie jedoch versuchen, einen TIME-Wert aufday
,week
,year
usw. zu kürzen, tritt ein Fehler auf.
Beispiele¶
Die folgenden Beispiele zeigen die Funktion TRUNC oder TRUNCATE für Datums-/Zeitwerte. Beispiele für das Kürzen von numerischen Werten finden Sie unter die numerische Form von TRUNC.
Die 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 Sie einen DATE-Wert auf Jahr, Monat und Tag ab:
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 Sie einen TIME-Wert auf die Minute ab:
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 |
+----------+---------------------+
Kürzen Sie einen TIMESTAMP-Wert auf die Stunde, Minute und Sekunde ab:
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 |
+-------------------------+-------------------------+-------------------------+-------------------------+
Gegenüberstellen der Funktion 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 |
+-------------------------+-----------+