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

Fonction CURRENT_TIMESTAMP() dans Oracle

Dans Oracle Database, le CURRENT_TIMESTAMP() 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 WITH TIME ZONE .

C'est similaire à LOCALTIMESTAMP , sauf que LOCALTIMESTAMP renvoie un TIMESTAMP valeur.

Syntaxe

La syntaxe ressemble à ceci :

CURRENT_TIMESTAMP [ (precision) ]

Où la precision facultative 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 CURRENT_TIMESTAMP
FROM DUAL;

Résultat :

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

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

Résultat :

2021-08-06 08:44:39

Précision

Voici un exemple qui spécifie la précision. Ce détermine la précision à la fraction de seconde de la valeur temporelle renvoyée.

SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;

Résultat :

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

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

Résultat :

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.

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

Comme mentionné, lors de l'appel de CURRENT_TIMESTAMP 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 CURRENT_TIMESTAMP()
FROM DUAL;

Résultat :

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.

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

Résultat :

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.