Como obter o valor UTC para SYSDATE no Oracle
Pergunta
Provavelmente um clássico ... você sabe um truque fácil de recuperar um valor UTC de SYSDATE em Oracle (melhor seria obter algo trabalhando na versão 8 de bem).
Por agora eu tenho função personalizada: (
Cheers,
Stefan
Solução
Você pode usar
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2000-03-28 11:30:00.00 -02:00') FROM DUAL;
Você também pode precisar alterar seu fuso horário
ALTER SESSION SET TIME_ZONE = 'Europe/Berlin';
Ou lê-lo
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM dual;
Outras dicas
select sys_extract_utc(systimestamp) from dual;
não vai funcionar em Oracle 8, no entanto.
Normalmente, eu trabalho com colunas DATE, não o maior, mas mais preciso TIMESTAMP.
A seguir irá retornar a data UTC atual como apenas isso -. A data ??p>
CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)
Trabalho com datas UTC é grande porque eu não precisa se preocupar com a complexidade dos fusos horários. Apenas a exibição final para o usuário precisa compensações ou outros problemas.
Se você quiser um timestamp em vez de apenas um encontro com sysdate, você pode especificar um fuso horário usando SYSTIMESTAMP:
select systimestamp at time zone 'UTC' from dual
saídas: 29-AUG-17 06.51.14.781998000 PM UTC
Eu estou usando:
SELECT CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE) FROM DUAL;
É bom trabalhar para mim.