CURRENT_DATE |
Date courante |
|---|---|
| Oracle Database SQL | Oracle 9i ou supérieure |
Syntaxe
| current_date |
Description
Cette fonction retourne la date courante en tenant compte du fuseau horaire de la session SQL et des paramètres d'«ALTER SESSION».
Remarques
- Dépend du fuseau horaire de la session : La fonction CURRENT_DATE retourne la date (et l'heure) en fonction du fuseau horaire actif de la session Oracle. Si l'utilisateur a défini un fuseau spécifique via ALTER SESSION SET TIME_ZONE, alors la valeur retournée en tiendra compte.
- Inclut à la fois la date et l'heure : Contrairement à ce que son nom peut suggérer, CURRENT_DATE retourne une valeur de type DATE contenant à la fois la date et l'heure (à la seconde près), ce qui est important dans les calculs temporels.
- Se différencie de SYSDATE : Alors que SYSDATE retourne la date/heure du système de la base de données, CURRENT_DATE est liée à la session utilisateur, ce qui la rend particulièrement utile dans les environnements multi-fuseaux horaires.
- Peut être influencée dynamiquement : La valeur retournée par CURRENT_DATE peut être modifiée de manière temporaire grâce à des instructions comme ALTER SESSION SET TIME_ZONE = '+02:00'. Cela permet d'adapter dynamiquement les résultats sans modifier le système.
- Très utile dans les applications multi-régions : Dans les applications distribuées, CURRENT_DATE est préférable à SYSDATE pour afficher des horodatages cohérents avec le contexte géographique de l'utilisateur, facilitant ainsi la personnalisation et la lisibilité.
- Retourne un type DATE (pas TIMESTAMP) : Même si CURRENT_DATE fournit une information horodatée, la valeur retournée est du type Oracle DATE, qui inclut les informations d'heure mais ne supporte pas les fractions de seconde ou fuseaux explicites comme le type TIMESTAMP WITH TIME ZONE.
- Compatible avec les fonctions temporelles : La valeur retournée peut être utilisée avec des fonctions de manipulation de date comme ADD_MONTHS, TRUNC, EXTRACT,..., ce qui permet une flexibilité importante dans les calculs de dates.
- Non paramétrable : CURRENT_DATE ne prend aucun paramètre. Son comportement est déterminé exclusivement par les paramètres de session et ne peut pas être ajusté directement dans la fonction.
- Impact sur les tests et les audits : Lors d'opérations sensibles au temps (comme des audits ou des traitements périodiques), il est préférable de documenter si la logique repose sur CURRENT_DATE (timezone utilisateur) ou SYSDATE (timezone serveur), pour éviter des incohérences de données.
- Peut produire des résultats différents selon les sessions : Deux utilisateurs exécutant la même requête avec CURRENT_DATE, mais ayant des fuseaux différents, obtiendront des résultats distincts. Cela doit être pris en compte lors de l'agrégation ou de la comparaison temporelle entre utilisateurs.
- Moins précis que SYSTIMESTAMP : Pour des besoins de haute précision temporelle (millisecondes ou fuseau explicite), CURRENT_DATE est insuffisant. Il faut alors utiliser CURRENT_TIMESTAMP ou SYSTIMESTAMP, qui retournent des types TIMESTAMP plus riches.
- Compatible depuis Oracle 9i : La fonction CURRENT_DATE a été introduite dans Oracle 9i, avec les premières évolutions autour du support des sessions à fuseau horaire. Depuis, elle reste une fonction standard et stable dans les versions modernes.
Exemple
Voici un exemple montrant l'affichage la date actuel :
- SELECT Current_Date FROM DUAL;
on obtiendra le résultat suivant si la date d'aujourd'hui est le 5 octobre 2011 :
| CURRENT_DATE |
| 05/10/11 |
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015