NEW_TIME |
Nouvelle heure |
|---|---|
| Oracle Database SQL | Oracle 9i ou supérieure |
Syntaxe
| new_time(date,zone1,zone2) |
Paramètres
| Nom | Description | |
|---|---|---|
| date | Ce paramètre permet d'indiquer la date à traiter. | |
| zone1 | Ce paramètre permet d'indiquer le fuseau horaire d'origine actuellement affiché. | |
| zone2 | Ce paramètre permet d'indiquer le nouveau fuseau horaire. Voici les valeurs reconnu : | |
| Valeur | Description | |
| AST | Cette valeur permet d'indiquer l'heure normal de l'atlantique. | |
| ADT | Cette valeur permet d'indiquer l'heure avancé de l'atlantique. | |
| BST | Cette valeur permet d'indiquer l'heure normal de Béring. | |
| BDT | Cette valeur permet d'indiquer l'heure avancé de Béring. | |
| CST | Cette valeur permet d'indiquer l'heure normal centrale. | |
| CDT | Cette valeur permet d'indiquer l'heure avancé centrale. | |
| EST | Cette valeur permet d'indiquer l'heure normal de l'est. | |
| EDT | Cette valeur permet d'indiquer l'heure avancé de l'est. | |
| GMT | Cette valeur permet d'indiquer l'heure de Greenwich. | |
| HST | Cette valeur permet d'indiquer l'heure normal de l'Alaska et Hawaï. | |
| HDT | Cette valeur permet d'indiquer l'heure avancé de l'Alaska et Hawaï. | |
| MST | Cette valeur permet d'indiquer l'heure normal des prairies. | |
| MDT | Cette valeur permet d'indiquer l'heure avancé des prairies. | |
| NST | Cette valeur permet d'indiquer l'heure normal des Terre-neuves. | |
| PST | Cette valeur permet d'indiquer l'heure normal du pacifique. | |
| PDT | Cette valeur permet d'indiquer l'heure avancé du pacifique. | |
| YST | Cette valeur permet d'indiquer l'heure normal du Yukon. | |
| YDT | Cette valeur permet d'indiquer l'heure avancé du Yukon. | |
Description
Cette fonction permet de connaître l'heure d'un fuseau horaire par rapport à un autre fuseau horaire.
Remarques
- La fonction NEW_TIME est utile pour convertir l'heure d'un fuseau horaire à un autre : Elle prend une date et deux abréviations de fuseaux horaires (zone1 et zone2), et retourne l'heure dans le fuseau cible. Cette capacité est précieuse dans les systèmes nécessitant la gestion d'utilisateurs répartis sur plusieurs zones géographiques.
- Les fuseaux horaires doivent être spécifiés à l'aide d'abréviations bien précises : Par exemple, PST (heure normale du Pacifique) ou EDT (heure avancée de l'Est). Oracle ne reconnaît que certaines valeurs prédéfinies, et toute autre valeur non supportée génère une erreur. Il est donc impératif de connaître la liste exacte des zones acceptées.
- NEW_TIME travaille avec des objets de type DATE, mais pas avec TIMESTAMP : Cela signifie qu'elle ne gère pas les fractions de secondes ni les informations de fuseau contenues dans les types TIMESTAMP WITH TIME ZONE. Cela limite son utilisation dans des contextes modernes où une précision temporelle accrue est requise.
- La fonction est sensible à la gestion de l'heure d'été : Elle permet de distinguer, par exemple, entre PST et PDT, ce qui permet d'effectuer une conversion plus précise selon la saison. Toutefois, cette gestion est manuelle, car Oracle ne déduit pas automatiquement si une date se trouve en période d'heure d'été.
- L'usage de NEW_TIME est déconseillé dans les systèmes internationaux récents : Les versions modernes d'Oracle recommandent l'utilisation des types TIMESTAMP WITH TIME ZONE combinés aux fonctions FROM_TZ ou AT TIME ZONE pour une meilleure exactitude et flexibilité sur les fuseaux.
- NEW_TIME peut être utilisée dans des requêtes SQL simples pour ajuster une date : Par exemple : SELECT NEW_TIME(SYSDATE, 'GMT', 'PST') FROM DUAL; renverra l'heure du Pacifique à partir de l'heure GMT actuelle. Cette simplicité est pratique pour des besoins de conversion de base.
- La fonction ne prend pas en compte les fuseaux horaires régionaux personnalisés : Contrairement aux fonctions plus récentes, elle ne permet pas d'utiliser des zones comme "Europe/Paris" ou "America/New_York". Seules les abréviations prédéfinies sont admises, ce qui limite son adaptabilité.
- Lorsqu'une conversion est effectuée, la date retournée est toujours en type DATE : Cela signifie que seule la date et l'heure jusqu'à la seconde sont conservées. Les utilisateurs ayant besoin d'une précision au-delà de la seconde doivent utiliser d'autres fonctions comme CAST ou TO_TIMESTAMP.
- Le comportement de NEW_TIME peut varier selon les paramètres NLS de la session : Par exemple, la représentation textuelle de la date retournée (avec ou sans heure) peut dépendre de la configuration de l'environnement Oracle. Cela peut introduire des incohérences dans les environnements multilingues.
- Cette fonction n'est pas compatible avec les fuseaux horaires UTC décalés (exemple : UTC+3) : Il est impossible de convertir vers ou depuis une zone horaire spécifiée avec un décalage numérique comme "+02:00". On doit nécessairement utiliser l'une des abréviations préenregistrées dans Oracle.
- La fonction est encore documentée et maintenue pour des raisons de rétrocompatibilité : Bien qu'obsolète pour de nombreuses tâches modernes, elle est toujours disponible dans Oracle 23c. Cela la rend utile dans des scripts hérités ou des bases anciennes encore en production.
- Une erreur fréquente est l'inversion des zones zone1 et zone2 : Il faut bien comprendre que zone1 est le fuseau d'origine de la date fournie, et que zone2 est le fuseau cible. Si on les inverse, la date retournée ne correspondra pas à l'heure attendue, ce qui peut provoquer des bogues discrets.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015