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

Función NEW_TIME() en Oracle

En Oracle Database, el NEW_TIME() La función convierte la fecha de una zona horaria específica a otra zona horaria específica y devuelve el resultado.

Sintaxis

La sintaxis es así:

NEW_TIME(date, timezone1, timezone2)

Entonces, la función devuelve la fecha y la hora en la zona horaria timezone2 fecha y hora en la zona horaria timezone1 son date .

Tenga en cuenta que antes de usar esta función, deberá configurar el NLS_DATE_FORMAT parámetro para mostrar el tiempo de 24 horas.

Los argumentos timezone1 y timezone2 puede ser cualquiera de estas cadenas de texto:

AST o ADT Hora estándar del Atlántico o de verano
BST o BDT Estándar de Bering o horario de verano
CST o CDT Hora estándar central o de verano
EST o EDT Hora estándar del este o de verano
GMT Hora del meridiano de Greenwich
HST o HDT Hora estándar de Alaska-Hawái o horario de verano
MST o MDT Mountain Standard o Daylight Time
NST Hora estándar de Terranova
PST o PDT Hora estándar del Pacífico o de verano
YST o YDT Hora estándar de Yukon o de verano

Ejemplo

He aquí un ejemplo:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

SELECT
    NEW_TIME(
        TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 
        'AST', 
        'PST'
        )
FROM DUAL;

Resultado:

2030-03-01 08:30:45

Como se mencionó, al usar esta función el NLS_DATE_FORMAT el parámetro debe configurarse para mostrar el horario de 24 horas, así que eso es lo que hace la primera línea en el ejemplo anterior. Puede omitir esta línea si el NLS_DATE_FORMAT de su sesión El parámetro ya utiliza el horario de 24 horas. Consulte Cómo configurar el formato de fecha de su sesión para obtener más ejemplos de cómo configurar el formato de fecha para la sesión actual.

Argumentos nulos

Si algún argumento es null , el resultado es null :

SET NULL 'null';

SELECT
    NEW_TIME(null, 'AST', 'ADT') AS "1",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), null, 'ADT') AS "2",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 'AST', null) AS "3"
FROM DUAL;

Resultado:

      1       2       3 
_______ _______ _______ 
null    null    null   

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null ocurre como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Argumento faltante

Llamando a NEW_TIME() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT NEW_TIME()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NEW_TIME()
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: