FROM_TZ |
De fuseau horaire |
|---|---|
| Oracle Database SQL | Oracle 9i ou supérieure |
Syntaxe
| from_tz(timestamp_value,time_zone_value) |
Paramètres
| Nom | Description |
|---|---|
| timestamp_value | Ce paramètre permet d'indiquer la valeur à convertir en une valeur TIMESTAMP avec un fuseau horaire |
| time_zone_value | Ce paramètre permet d'indiquer le fuseau horaire utiliser afin de convertir le paramètre «timestamp_value» en TIMESTAMP avec un fuseau horaire. |
Description
Cette fonction permet de sortie une date et heure (TimeStamp) par rapport à un fuseau horaire.
Remarques
- Conversion explicite vers TIMESTAMP WITH TIME ZONE : La fonction FROM_TZ est spécifiquement conçue pour convertir une valeur de type TIMESTAMP (sans fuseau horaire) en TIMESTAMP WITH TIME ZONE. Cela permet d'ajouter explicitement des informations de fuseau horaire à une date/heure existante. Elle est indispensable lorsque vous travaillez avec des données temporelles dans des environnements internationaux ou répartis sur plusieurs zones géographiques.
- Ajout de contexte temporel aux données : Utiliser FROM_TZ permet de donner un contexte géographique ou réglementaire à une date. Par exemple, un enregistrement de log peut contenir un timestamp sans précision de lieu. En utilisant FROM_TZ(timestamp, 'Europe/Paris'), on fixe clairement ce contexte, ce qui est crucial pour la traçabilité, la conformité légale ou les analyses temporelles sensibles.
- Manipulation simplifiée de fuseaux horaires : Grâce à FROM_TZ, on peut facilement appliquer un fuseau horaire à une valeur horaire. Le deuxième paramètre accepte à la fois un décalage UTC ('+02:00') ou un identifiant régional ('America/New_York'). Cela rend la fonction très flexible pour la manipulation de données mondiales, et elle s'intègre facilement dans des flux de conversion ou de comparaison de zones horaires.
- Fonction de base pour les conversions avec AT TIME ZONE : Une fois la valeur convertie avec FROM_TZ, on peut facilement la transformer dans d'autres fuseaux horaires grâce à l'opérateur AT TIME ZONE. Par exemple :
- FROM_TZ(TIMESTAMP '2025-07-01 12:00:00', 'UTC') AT TIME ZONE 'Europe/Paris'
- Compatibilité avec les données TIMESTAMP : Le premier paramètre de FROM_TZ doit être un TIMESTAMP pur, c'est-à-dire sans fuseau horaire associé. Si l'on tente d'utiliser une valeur de type DATE ou TIMESTAMP WITH TIME ZONE, Oracle retournera une erreur ou une conversion implicite non fiable. Il est donc essentiel de vérifier ou de caster correctement la donnée en entrée.
- Utilisation fréquente dans les systèmes de reporting : Dans les systèmes de reporting ou de business intelligence, FROM_TZ est couramment utilisée pour synchroniser les données temporelles issues de différentes sources ou fuseaux horaires. Elle permet de construire des indicateurs temporels cohérents pour l'utilisateur final, surtout si les données proviennent de serveurs ou régions différentes.
- Incontournable pour les architectures distribuées : Dans une architecture multizone (exemple : infonuagique réparti ou base de données partagée entre continents), la gestion des fuseaux horaires devient cruciale. FROM_TZ est souvent utilisée en conjonction avec des colonnes TIMESTAMP pour expliciter l'heure d'un événement selon l'origine des données (par exemple : un achat enregistré au fuseau horaire du client).
- Préparation aux conversions globales : FROM_TZ peut être vue comme une fonction de préparation, c'est-à-dire qu'elle transforme une donnée en un format compatible avec d'autres fonctions temporelles comme SYS_EXTRACT_UTC, NEW_TIME, CURRENT_TIMESTAMP, etc. Une fois la donnée enrichie de son fuseau, elle devient pleinement utilisable dans tous les traitements temporels sophistiqués.
- Comportement neutre pour les valeurs UTC : Lorsque le paramètre time_zone_value vaut 'UTC' ou '+00:00', la valeur retournée par FROM_TZ correspond à l'entrée, simplement étiquetée UTC. Cela permet une standardisation temporelle des données dans un entrepôt de données, où toutes les valeurs sont entreposées selon le temps universel et converties à l'affichage.
- Nécessaire pour stocker des données TIMEZONE dans Oracle : La plupart des colonnes de type TIMESTAMP WITH TIME ZONE doivent être alimentées avec des données générées à partir de FROM_TZ, surtout si les données sources n'incluent pas d'information de fuseau. Cela évite des comportements implicites dangereux où Oracle applique le fuseau de la session en cours, ce qui peut créer des incohérences.
- Sensibilité à la casse et à la validité du fuseau horaire : Il faut prêter attention à la casse du time_zone_value : 'Europe/Paris' est valide, mais 'europe/paris' peut échouer selon les paramètres linguistiques ou régionaux de la base Oracle. De plus, si le fuseau est mal orthographié ou inconnu, une erreur ORA-01882 ou ORA-01899 peut être levée. Il est donc recommandé de valider les fuseaux en amont.
- Base des conversions de journaux de bords, transactions et audits : Enfin, FROM_TZ est extrêmement utile dans le domaine de l'audit et de la cybersécurité, où il est fondamental de retracer un événement selon l'heure exacte locale. Elle permet de traduire un horodatage brut (souvent en UTC) en une heure contextualisée dans le fuseau où l'action s'est réellement produite, ce qui est vital pour les enquêtes ou la conformité réglementaire.
permet d'obtenir l'heure locale à Paris correspondant à midi UTC. Cela simplifie la gestion d'horaires multi-régions dans les applications.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015