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

Fonction SYS_EXTRACT_UTC() dans Oracle

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: