Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction NEW_TIME() dans Oracle

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: