Dans Oracle Database, le SYS_EXTRACT_UTC()
La fonction extrait l'UTC (Coordinated Universal Time) d'une valeur datetime avec un décalage de fuseau horaire ou un nom de région de fuseau horaire.
Syntaxe
La syntaxe ressemble à ceci :
SYS_EXTRACT_UTC(datetime_with_timezone)
Exemple
Voici un exemple pour illustrer :
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Résultat :
25/AUG/35 06:30:45.123456789 AM
Le format résultant dépend de la valeur de votre NLS_TIMESTAMP_FORMAT
paramètre. La valeur par défaut de ce paramètre est dérivée du NLS_TERRITORY
paramètre. La modification de l'un de ces éléments peut modifier le format du SYS_EXTRACT_UTC()
fonction pour votre session.
Exemple :
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-MON-RRRR HH24:MI:SSXFF';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Résultat :
25-AUG-2035 06:30:45.123456789
Et voici à quoi cela ressemble lorsque je définis le NLS_TERRITORY
paramètre à AMERICA
:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Résultat :
25-AUG-35 06.30.45.123456789 AM
La modification de ce paramètre définit implicitement le NLS_TIMESTAMP_FORMAT
au format AMERICA
.
Voir Comment changer le format de date de votre session pour plus d'informations et d'exemples.
Nom de la région du fuseau horaire
Vous pouvez également utiliser le nom de la région du fuseau horaire au lieu du décalage horaire.
Exemple :
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;
Résultat :
25-AUG-35 03.30.45.123456789 AM
Fuseau horaire par défaut
Si aucun fuseau horaire n'est spécifié, la date et l'heure sont associées au fuseau horaire de la session.
Exemple :
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;
Résultat :
25-AUG-35 12.30.45.123456789 AM
Vous pouvez vérifier le fuseau horaire de la session en cours avec le SESSIONTIMEZONE
fonction :
SELECT SESSIONTIMEZONE
FROM DUAL;
Résultat :
Australia/Brisbane
Voir 4 façons de changer le fuseau horaire dans Oracle pour des exemples de changement.
Arguments nuls
Passer null
génère une erreur :
SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC(null) FROM DUAL Error at Command Line : 1 Column : 24 Error report - SQL Error: ORA-30175: invalid type given for an argument 30175. 00000 - "invalid type given for an argument" *Cause: There is an argument with an invalid type in the argument list. *Action: Use the correct type wrapper for the argument.
Argument manquant
Appeler la fonction avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT SYS_EXTRACT_UTC()
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC() 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: