Oracle
 sql >> Database >  >> RDS >> Oracle

SYS_EXTRACT_UTC() Funzione in Oracle

In Oracle Database, il SYS_EXTRACT_UTC() la funzione estrae l'UTC (Coordinated Universal Time) da un valore datetime con offset del fuso orario o nome della regione del fuso orario.

Sintassi

La sintassi è questa:

SYS_EXTRACT_UTC(datetime_with_timezone)

Esempio

Ecco un esempio da dimostrare:

SELECT 
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;

Risultato:

25/AUG/35 06:30:45.123456789 AM

Il formato risultante dipende dal valore del tuo NLS_TIMESTAMP_FORMAT parametro. Il valore predefinito di questo parametro è derivato da NLS_TERRITORY parametro. La modifica di uno qualsiasi di questi può modificare il formato di SYS_EXTRACT_UTC() funzione per la tua sessione.

Esempio:

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;

Risultato:

25-AUG-2035 06:30:45.123456789

Ed ecco come appare quando imposto NLS_TERRITORY parametro su AMERICA :

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT 
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;

Risultato:

25-AUG-35 06.30.45.123456789 AM

La modifica di questo parametro imposta implicitamente il NLS_TIMESTAMP_FORMAT nel formato per AMERICA .

Per ulteriori informazioni ed esempi, vedere Come modificare il formato della data della sessione.

Nome della regione del fuso orario

In alternativa, puoi utilizzare il nome della regione del fuso orario invece dell'offset del fuso orario.

Esempio:

SELECT 
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;

Risultato:

25-AUG-35 03.30.45.123456789 AM

Fuso orario predefinito

Se non viene specificato un fuso orario, la data e l'ora viene associata al fuso orario della sessione.

Esempio:

SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;

Risultato:

25-AUG-35 12.30.45.123456789 AM

Puoi controllare il fuso orario della sessione corrente con il SESSIONTIMEZONE funzione:

SELECT SESSIONTIMEZONE
FROM DUAL;

Risultato:

Australia/Brisbane

Vedi 4 modi per cambiare il fuso orario in Oracle per esempi di modifica.

Argomenti nulli

Passaggio null restituisce un errore:

SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;

Risultato:

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.

Argomento mancante

Chiamando la funzione con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:

SELECT SYS_EXTRACT_UTC()
FROM DUAL;

Risultato:

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: