In der Oracle-Datenbank der LOCALTIMESTAMP()
Die Funktion gibt das aktuelle Datum und die Uhrzeit in der Sitzungszeitzone in einem Wert vom Datentyp TIMESTAMP
zurück .
Es ähnelt CURRENT_TIMESTAMP
, außer dass CURRENT_TIMESTAMP
gibt einen TIMESTAMP WITH TIME ZONE
zurück Wert.
Syntax
Die Syntax lautet wie folgt:
LOCALTIMESTAMP [ (timestamp_precision) ]
Wobei die optionale timestamp_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 LOCALTIMESTAMP
FROM DUAL;
Ergebnis:
07/AUG/21 08:49:50.026443000 AM
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(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Ergebnis:
2021-08-07 08:50:20
Präzision
Hier ist ein Beispiel, das die Genauigkeit angibt. Dies bestimmt die Sekundenbruchteilgenauigkeit des zurückgegebenen Zeitwerts.
SELECT LOCALTIMESTAMP(9)
FROM DUAL;
Ergebnis:
07/AUG/21 08:50:47.203717000 AM
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 LOCALTIMESTAMP(10)
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(10) FROM DUAL Error at Command Line : 1 Column : 23 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 LOCALTIMESTAMP
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 LOCALTIMESTAMP()
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP() FROM DUAL Error at Command Line : 1 Column : 23 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 LOCALTIMESTAMP(null)
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(null) FROM DUAL Error at Command Line : 1 Column : 23 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.