No banco de dados Oracle, o
NEW_TIME()
A função converte a data de um fuso horário especificado para outro fuso horário especificado e retorna o resultado. Sintaxe
A sintaxe fica assim:
NEW_TIME(date, timezone1, timezone2)
Assim, a função retorna a data e hora no fuso horário
timezone2
quando data e hora no fuso horário timezone1
são date
. Observe que antes de usar esta função, você precisará definir o
NLS_DATE_FORMAT
parâmetro para exibir o horário de 24 horas. Os argumentos
timezone1
e timezone2
pode ser qualquer uma destas strings de texto:AST ou ADT | Atlantic Standard ou Daylight Time |
BST ou BDT | Horário padrão ou diurno de Bering |
CST ou CDT | Horário central ou horário de verão |
EST ou EDT | Horário padrão do leste ou horário de verão |
GMT | Hora Média de Greenwich |
HST ou HDT | Horário padrão do Alasca-Havaí ou horário de verão |
MST ou MDT | Mountain Standard ou Daylight Time |
NST | Horário padrão de Terra Nova |
PST ou PDT | Padrão do Pacífico ou Horário de Verão |
YST ou YDT | Horário padrão ou diurno de Yukon |
Exemplo
Aqui está um exemplo:
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 mencionado, ao usar esta função o
NLS_DATE_FORMAT
O parâmetro precisa ser definido para exibir 24 horas, então é isso que a primeira linha faz no exemplo acima. Você pode omitir esta linha se o NLS_DATE_FORMAT
da sua sessão parâmetro já usa 24 horas. Consulte Como definir o formato de data da sua sessão para obter mais exemplos de configuração do formato de data para a sessão atual. Argumentos nulos
Se algum argumento for
null
, o resultado é 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
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que
null
ocorre como resultado de um SQL SELECT
demonstração. No entanto, você pode usar
SET NULL
para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null
deve ser devolvido. Argumento ausente
Chamando
NEW_TIME()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro: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: