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.