sql >> Databasteknik >  >> RDS >> Oracle

CURRENT_TIMESTAMP() Funktion i Oracle

I Oracle Database, CURRENT_TIMESTAMP() funktion returnerar aktuellt datum och tid i sessionens tidszon, i ett värde av datatypen TIMESTAMP WITH TIME ZONE .

Det liknar LOCALTIMESTAMP , förutom att LOCALTIMESTAMP returnerar en TIMESTAMP värde.

Syntax

Syntaxen ser ut så här:

CURRENT_TIMESTAMP [ (precision) ]

Där den valfria precision argument anger bråkdelssekunderprecisionen för det returnerade tidsvärdet.

När funktionen anropas utan argument måste parentesen utelämnas.

Exempel

Här är ett exempel på att anropa funktionen utan att specificera precisionen:

SELECT CURRENT_TIMESTAMP
FROM DUAL;

Resultat:

06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE

Det här exemplet visar datumet i ett format baserat på värdet av mitt systems NLS_DATE_FORMAT parameter (som för närvarande är DD/MON/RR ). Denna parameter får sitt värde från NLS_TERRITORY parameter (varav min är AUSTRALIA ).

Vi har möjlighet att ändra dessa parametrar (se till exempel Hur du ändrar datumformatet i din Oracle-session).

Alternativt kan vi använda en funktion som TO_CHAR() för att returnera resultatet i ett annat format.

Exempel:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Resultat:

2021-08-06 08:44:39

Precision

Här är ett exempel som anger precisionen. Denna bestämmer bråkdelssekunderprecisionen för det returnerade tidsvärdet.

SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;

Resultat:

06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE

Observera att precisionsargumentet måste vara ett tal mellan 0 och 9.

Så här händer när vi skickar ett värde utanför det intervallet:

SELECT CURRENT_TIMESTAMP(10)
FROM DUAL;

Resultat:

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.

Utesluter parenteserna utan att specificera precision

Som nämnts, när du ringer CURRENT_TIMESTAMP utan att klara precision argument måste du utelämna parenteserna.

Här är vad som händer när vi inkluderar parenteserna utan att specificera precisionen:

SELECT CURRENT_TIMESTAMP()
FROM DUAL;

Resultat:

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.

Vi får samma fel som i föregående exempel. Oracle Database letar efter ett precisionsargument mellan 0 och 9, men vi klarade inget.

Nollargument

Samma fel uppstår när null skickas :

SELECT CURRENT_TIMESTAMP(null)
FROM DUAL;

Resultat:

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.

  1. Hur man ställer in automatisk failover för Moodle MySQL-databasen

  2. Hur man sammanfogar strängar i PostgreSQL

  3. SOUNDEX() Funktion i Oracle

  4. Hur man förhindrar uppdateringar av en tabell, med undantag för en situation