sql >> Databasteknik >  >> RDS >> Oracle

LOCALTIMESTAMP() Funktion i Oracle

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

Det liknar CURRENT_TIMESTAMP , förutom att CURRENT_TIMESTAMP returnerar en TIMESTAMP WITH TIME ZONE värde.

Syntax

Syntaxen ser ut så här:

LOCALTIMESTAMP [ (timestamp_precision) ]

Där den valfria timestamp_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 LOCALTIMESTAMP
FROM DUAL;

Resultat:

07/AUG/21 08:49:50.026443000 AM

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 ). Den här parametern 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(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Resultat:

2021-08-07 08:50:20

Precision

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

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Resultat:

07/AUG/21 08:50:47.203717000 AM

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 LOCALTIMESTAMP(10)
FROM DUAL;

Resultat:

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.

Utesluter parenteserna utan att specificera precision

Som nämnts, när du anropar LOCALTIMESTAMP 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 LOCALTIMESTAMP()
FROM DUAL;

Resultat:

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.

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 LOCALTIMESTAMP(null)
FROM DUAL;

Resultat:

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.

  1. Jämför MariaDB Enterprise Backup med ClusterControl Backup Management

  2. Hur kan jag utföra en SELECT DISTINCT på alla fält utom en BLOB?

  3. Viktiga hälsokontroller för dina MySQL Source-Replica Servers

  4. Vad är en formatsträng i SQL Server?