Oracle
 sql >> Datenbank >  >> RDS >> Oracle

LOCALTIMESTAMP()-Funktion in Oracle

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.