sql >> Base de Datos >  >> RDS >> Oracle

Función SYS_EXTRACT_UTC() en Oracle

En Oracle Database, el SYS_EXTRACT_UTC() La función extrae el UTC (hora universal coordinada) de un valor de fecha y hora con el desplazamiento de la zona horaria o el nombre de la región de la zona horaria.

Sintaxis

La sintaxis es así:

SYS_EXTRACT_UTC(datetime_with_timezone)

Ejemplo

Aquí hay un ejemplo para demostrarlo:

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

Resultado:

25/AUG/35 06:30:45.123456789 AM

El formato resultante depende del valor de su NLS_TIMESTAMP_FORMAT parámetro. El valor predeterminado de este parámetro se deriva del NLS_TERRITORY parámetro. Cambiar cualquiera de estos puede cambiar el formato de SYS_EXTRACT_UTC() función para su sesión.

Ejemplo:

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;

Resultado:

25-AUG-2035 06:30:45.123456789

Y así es como se ve cuando configuro NLS_TERRITORY parámetro a AMERICA :

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

Resultado:

25-AUG-35 06.30.45.123456789 AM

Cambiar este parámetro establece implícitamente el NLS_TIMESTAMP_FORMAT al formato para AMERICA .

Consulte Cómo cambiar el formato de fecha de su sesión para obtener más información y ejemplos.

Nombre de región de zona horaria

Como alternativa, puede usar el nombre de la región de la zona horaria en lugar del desplazamiento de la zona horaria.

Ejemplo:

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

Resultado:

25-AUG-35 03.30.45.123456789 AM

Zona horaria predeterminada

Si no se especifica una zona horaria, la fecha y hora se asocia con la zona horaria de la sesión.

Ejemplo:

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

Resultado:

25-AUG-35 12.30.45.123456789 AM

Puede verificar la zona horaria de la sesión actual con SESSIONTIMEZONE función:

SELECT SESSIONTIMEZONE
FROM DUAL;

Resultado:

Australia/Brisbane

Consulte 4 formas de cambiar la zona horaria en Oracle para ver ejemplos de cómo cambiar esto.

Argumentos nulos

Pasando null da como resultado un error:

SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;

Resultado:

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.

Argumento faltante

Llamar a la función con el número incorrecto de argumentos, o sin pasar ningún argumento, genera un error:

SELECT SYS_EXTRACT_UTC()
FROM DUAL;

Resultado:

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: