Dans Oracle Database, le NEW_TIME()
convertit la date d'un fuseau horaire spécifié en un autre fuseau horaire spécifié et renvoie le résultat.
Syntaxe
La syntaxe ressemble à ceci :
NEW_TIME(date, timezone1, timezone2)
Ainsi, la fonction renvoie la date et l'heure dans le fuseau horaire timezone2
quand la date et l'heure dans le fuseau horaire timezone1
sont date
.
Notez qu'avant d'utiliser cette fonction, vous devrez définir le NLS_DATE_FORMAT
paramètre pour afficher l'heure sur 24 heures.
Les arguments timezone1
et timezone2
peut être l'une de ces chaînes de texte :
AST ou ADT | Heure normale de l'Atlantique ou heure d'été |
BST ou BDT | Heure normale de Béring ou heure d'été |
CST ou CDT | Heure normale du centre ou heure d'été |
EST ou EDT | Heure normale de l'Est ou heure avancée |
GMT | Méridien de Greenwich |
HST ou HDT | Heure standard Alaska-Hawaï ou heure d'été |
MST ou MDT | Heure normale des Rocheuses ou heure d'été |
NST | Heure normale de Terre-Neuve |
PST ou PDT | Heure normale du Pacifique ou heure d'été |
YST ou YDT | Heure normale ou avancée du Yukon |
Exemple
Voici un exemple :
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT
NEW_TIME(
TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'),
'AST',
'PST'
)
FROM DUAL;
Résultat :
2030-03-01 08:30:45
Comme mentionné, lors de l'utilisation de cette fonction le NLS_DATE_FORMAT
Le paramètre doit être défini pour afficher l'heure sur 24 heures, c'est donc ce que fait la première ligne dans l'exemple ci-dessus. Vous pouvez omettre cette ligne si le NLS_DATE_FORMAT
de votre session paramètre utilise déjà le format 24 heures. Voir Comment définir le format de date de votre session pour plus d'exemples de définition du format de date pour la session en cours.
Arguments nuls
Si un argument est null
, le résultat est null
:
SET NULL 'null';
SELECT
NEW_TIME(null, 'AST', 'ADT') AS "1",
NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), null, 'ADT') AS "2",
NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 'AST', null) AS "3"
FROM DUAL;
Résultat :
1 2 3 _______ _______ _______ null null null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null
se produit à la suite d'un SQL SELECT
déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Argument manquant
Appel de NEW_TIME()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT NEW_TIME()
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT NEW_TIME() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: