Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction LOCALTIMESTAMP() dans Oracle

Dans Oracle Database, le LOCALTIMESTAMP() la fonction renvoie la date et l'heure actuelles dans le fuseau horaire de la session dans une valeur de type de données TIMESTAMP .

C'est similaire à CURRENT_TIMESTAMP , sauf que CURRENT_TIMESTAMP renvoie un TIMESTAMP WITH TIME ZONE valeur.

Syntaxe

La syntaxe ressemble à ceci :

LOCALTIMESTAMP [ (timestamp_precision) ]

Où l'option timestamp_precision L'argument spécifie la précision en fraction de seconde de la valeur de temps renvoyée.

Lors de l'appel de la fonction sans argument, les parenthèses doivent être omises.

Exemple

Voici un exemple d'appel de la fonction sans spécifier la précision :

SELECT LOCALTIMESTAMP
FROM DUAL;

Résultat :

07/AUG/21 08:49:50.026443000 AM

Cet exemple affiche la date dans un format basé sur la valeur du NLS_DATE_FORMAT de mon système paramètre (qui est actuellement DD/MON/RR ). Ce paramètre tire sa valeur du NLS_TERRITORY paramètre (dont le mien est AUSTRALIA ).

Nous avons la possibilité de modifier ces paramètres (par exemple, voir Comment modifier le format de date dans votre session Oracle).

Alternativement, nous pouvons utiliser une fonction comme TO_CHAR() pour renvoyer le résultat dans un format différent.

Exemple :

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

Résultat :

2021-08-07 08:50:20

Précision

Voici un exemple qui spécifie la précision. Cela détermine la précision en fraction de seconde de la valeur de temps renvoyée.

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Résultat :

07/AUG/21 08:50:47.203717000 AM

Notez que l'argument précision doit être un nombre compris entre 0 et 9.

Voici ce qui se passe lorsque nous transmettons une valeur en dehors de cette plage :

SELECT LOCALTIMESTAMP(10)
FROM DUAL;

Résultat :

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.

Omettre les parenthèses sans spécifier de précision

Comme mentionné, lors de l'appel de LOCALTIMESTAMP sans passer la precision argument, vous devez omettre les parenthèses.

Voici ce qui se passe lorsque nous incluons les parenthèses sans spécifier la précision :

SELECT LOCALTIMESTAMP()
FROM DUAL;

Résultat :

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.

Nous obtenons la même erreur que dans l'exemple précédent. Oracle Database recherche un argument de précision entre 0 et 9, mais nous n'en avons passé aucun.

Argument nul

La même erreur se produit lors du passage de null :

SELECT LOCALTIMESTAMP(null)
FROM DUAL;

Résultat :

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.