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: