In der Oracle-Datenbank das TRUNC(date)
Die Funktion gibt den angegebenen Datumswert mit dem Zeitabschnitt des Tages zurück, der auf die im angegebenen Formatmodell bereitgestellte Einheit gekürzt ist.
Oracle hat auch einen TRUNC(number)
Syntax, die für Zahlen verwendet wird. In diesem Artikel geht es ausschließlich um TRUNC(date)
Syntax, die für Datumsangaben verwendet wird.
Syntax
Die Syntax lautet wie folgt:
TRUNC(date [, fmt ])
Wobei date
ist das zu kürzende Datum und fmt
ist ein optionales Formatmodell, das eine Einheit angibt, für die der Wert abgeschnitten werden soll. Das Formatmodell kann eines der unterstützten Formatmodelle für TRUNC(date)
sein und ROUND(date)
Funktionen.
Die Funktion arbeitet nach den Regeln des gregorianischen Kalenders (sie reagiert nicht auf den Wert von NLS_CALENDAR
Parameter).
Beispiel
Hier ist ein Beispiel:
SELECT TRUNC(DATE '2035-08-22', 'MONTH')
FROM DUAL;
Ergebnis:
01-AUG-35
Hier sind noch einige:
SELECT
TRUNC(DATE '2035-08-22', 'D') AS "D",
TRUNC(DATE '2035-08-22', 'DD') AS "DD",
TRUNC(DATE '2035-08-22', 'MONTH') AS "Month",
TRUNC(DATE '2035-08-22', 'YEAR') AS "Year",
TRUNC(DATE '2035-08-22', 'CC') AS "CC"
FROM DUAL;
Ergebnis:
D DD Month Year CC ____________ ____________ ____________ ____________ ____________ 19-AUG-35 22-AUG-35 01-AUG-35 01-JAN-35 01-JAN-01
Das Ergebnis wird gemäß dem Datumsformat für die aktuelle Sitzung formatiert. Weitere Informationen dazu finden Sie unter So überprüfen Sie das Datumsformat der aktuellen Sitzung und So ändern Sie das Datumsformat für die aktuelle Sitzung.
Standarddatumseinheit
Die Standarddatumseinheit ist DD
:
SELECT
TRUNC(DATE '2035-08-22') AS "Default",
TRUNC(DATE '2035-08-22', 'DD') AS "DD"
FROM DUAL;
Ergebnis:
Default DD ____________ ____________ 22-AUG-35 22-AUG-35
Im Vergleich zu ROUND()
Der TRUNC(date)
Funktion unterscheidet sich von ROUND(date)
Funktion. Das ROUND()
Die Funktion rundet das Datum in einigen Fällen auf und in anderen ab. Der TRUNC()
Die Funktion hingegen kürzt das Datum ohne Rundung einfach auf die angegebene Einheit.
Hier ist ein Vergleich, um diesen Unterschied zu demonstrieren:
SELECT
TRUNC(DATE '2030-12-31', 'MONTH') AS "Trunc",
ROUND(DATE '2030-12-31', 'MONTH') AS "Round"
FROM DUAL;
Ergebnis:
Trunc Round ____________ ____________ 01-DEC-30 01-JAN-31
Nullwerte
Wenn eines der Argumente null
ist , ist das Ergebnis null
:
SET NULL 'null';
SELECT
TRUNC(null, 'D'),
TRUNC(date'2020-12-30', null)
FROM DUAL;
Ergebnis:
TRUNC(NULL,'D') TRUNC(DATE'2020-12-30',NULL) __________________ _______________________________ null null
Standardmäßig geben SQLcl und SQL*Plus immer dann ein Leerzeichen zurück, wenn als Ergebnis eines SQL SELECT
ein Nullwert auftritt Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Ungültige Argumentanzahl
Aufruf von TRUNC()
ohne Argument führt zu einem Fehler:
SELECT TRUNC()
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT TRUNC() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Und der Aufruf mit zu vielen Argumenten führt zu einem Fehler:
SELECT TRUNC(1, 2, 3)
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT TRUNC(1, 2, 3) FROM DUAL Error at Command Line : 1 Column : 20 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: