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

CURRENT_TIMESTAMP()-Funktion in Oracle

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.