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: