sql >> Database teknologi >  >> RDS >> Oracle

LOCALTIMESTAMP() Funktion i Oracle

I Oracle Database er LOCALTIMESTAMP() funktion returnerer den aktuelle dato og tid i sessionens tidszone i en værdi af datatypen TIMESTAMP .

Det ligner CURRENT_TIMESTAMP , bortset fra at CURRENT_TIMESTAMP returnerer et TIMESTAMP WITH TIME ZONE værdi.

Syntaks

Syntaksen ser sådan ud:

LOCALTIMESTAMP [ (timestamp_precision) ]

Hvor den valgfri timestamp_precision argument angiver brøksekunders præcision af den returnerede tidsværdi.

Når funktionen kaldes uden argument, skal parentesen udelades.

Eksempel

Her er et eksempel på at kalde funktionen uden at angive præcisionen:

SELECT LOCALTIMESTAMP
FROM DUAL;

Resultat:

07/AUG/21 08:49:50.026443000 AM

Dette eksempel viser datoen i et format baseret på værdien af ​​mit systems NLS_DATE_FORMAT parameter (som i øjeblikket er DD/MON/RR ). Denne parameter får sin værdi fra NLS_TERRITORY parameter (hvoraf min er AUSTRALIA ).

Vi har mulighed for at ændre disse parametre (se f.eks. Sådan ændres datoformatet i din Oracle-session).

Alternativt kan vi bruge en funktion som TO_CHAR() for at returnere resultatet i et andet format.

Eksempel:

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

Resultat:

2021-08-07 08:50:20

Nøjagtighed

Her er et eksempel, der specificerer præcisionen. Dette bestemmer brøkdelen af ​​sekunders præcision af den returnerede tidsværdi.

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Resultat:

07/AUG/21 08:50:47.203717000 AM

Bemærk, at præcisionsargumentet skal være et tal mellem 0 og 9.

Her er, hvad der sker, når vi sender en værdi uden for dette interval:

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.

Udeladelse af parenteser uden at specificere præcision

Som nævnt, når du kalder LOCALTIMESTAMP uden at bestå precision argument, skal du udelade parenteserne.

Her er, hvad der sker, når vi inkluderer parenteserne uden at angive præcisionen:

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 samme fejl som i det foregående eksempel. Oracle Database leder efter et præcisionsargument mellem 0 og 9, men vi bestod ingen.

Nul-argument

Den samme fejl opstår, når du sender null :

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. Brug af pg_dump til kun at få indsæt sætninger fra én tabel i databasen

  2. Inkrementelle statistikker bruges IKKE af Query Optimizer

  3. Omskrivning af forespørgsler for at forbedre ydeevnen

  4. Regneark vs. databaser:Er det tid til at skifte? Del 2