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

CURRENT_TIMESTAMP() Funktion i Oracle

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

Det ligner LOCALTIMESTAMP , bortset fra at LOCALTIMESTAMP returnerer en TIMESTAMP værdi.

Syntaks

Syntaksen ser sådan ud:

CURRENT_TIMESTAMP [ (precision) ]

Hvor den valgfri 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 CURRENT_TIMESTAMP
FROM DUAL;

Resultat:

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

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(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Resultat:

2021-08-06 08:44:39

Nøjagtighed

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

SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;

Resultat:

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

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 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.

Udeladelse af parenteser uden at specificere præcision

Som nævnt, når du ringer til CURRENT_TIMESTAMP uden at bestå precision argument, skal du udelade parenteserne.

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

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 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 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. Sådan opretter du en fremmednøgle i SQL Server (T-SQL-eksempler)

  2. Sådan opsætter du destinationskatalog for arkivlog i Oracle-databasen

  3. Ændre en MySQL-kolonne til at være AUTO_INCREMENT

  4. Indsæt alle data fra et datagridview til databasen på én gang