In der Oracle-Datenbank der CURRENT_TIMESTAMP()
Die Funktion gibt das aktuelle Datum und die Uhrzeit in der Zeitzone der Sitzung in einem Wert vom Datentyp TIMESTAMP WITH TIME ZONE
zurück .
Es ist ähnlich wie LOCALTIMESTAMP
, außer dass LOCALTIMESTAMP
gibt einen TIMESTAMP
zurück Wert.
Syntax
Die Syntax lautet wie folgt:
CURRENT_TIMESTAMP [ (precision) ]
Wo die optionale precision
Das Argument gibt die Sekundenbruchteilgenauigkeit des zurückgegebenen Zeitwerts an.
Beim Aufruf der Funktion ohne Argument müssen die Klammern weggelassen werden.
Beispiel
Hier ist ein Beispiel für den Aufruf der Funktion ohne Angabe der Genauigkeit:
SELECT CURRENT_TIMESTAMP
FROM DUAL;
Ergebnis:
06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE
Dieses Beispiel zeigt das Datum in einem Format an, das auf dem Wert von NLS_DATE_FORMAT
meines Systems basiert -Parameter (derzeit DD/MON/RR
). Dieser Parameter leitet seinen Wert vom NLS_TERRITORY
ab Parameter (von denen meiner AUSTRALIA
ist ).
Wir haben die Möglichkeit, diese Parameter zu ändern (siehe beispielsweise How to Change the Date Format in your Oracle Session).
Alternativ können wir eine Funktion wie TO_CHAR()
verwenden um das Ergebnis in einem anderen Format zurückzugeben.
Beispiel:
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Ergebnis:
2021-08-06 08:44:39
Präzision
Hier ist ein Beispiel, das die Genauigkeit angibt. Dies bestimmt die Sekundenbruchteilgenauigkeit des zurückgegebenen Zeitwerts.
SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;
Ergebnis:
06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE
Beachten Sie, dass das Genauigkeitsargument eine Zahl zwischen 0 und 9 sein muss.
Folgendes passiert, wenn wir einen Wert außerhalb dieses Bereichs übergeben:
SELECT CURRENT_TIMESTAMP(10)
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP(10) FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Weglassen der Klammern ohne Angabe der Genauigkeit
Wie erwähnt, beim Aufruf von CURRENT_TIMESTAMP
ohne die precision
zu überschreiten Argument müssen Sie die Klammern weglassen.
Folgendes passiert, wenn wir die Klammern einfügen, ohne die Genauigkeit anzugeben:
SELECT CURRENT_TIMESTAMP()
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP() FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Wir erhalten den gleichen Fehler wie im vorherigen Beispiel. Oracle Database sucht nach einem Genauigkeitsargument zwischen 0 und 9, aber wir haben keines übergeben.
Null-Argument
Derselbe Fehler tritt auf, wenn null
übergeben wird :
SELECT CURRENT_TIMESTAMP(null)
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP(null) FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.