从Oracle的DATE列获取UTC时间

时间:2016-09-16 09:22:38

标签: oracle

我试图找出作业何时运行,并希望以UTC时间显示时间。

这给了服务器时间(我假设):

select 
  to_char(last_date, 'yyyy-mm-dd hh24:mi:ss') last
from all_jobs;

但我想将其显示为UTC时间,以便在不同服务器之间进行比较。我尝试过像这样使用SYS_EXTRACT_UTC,但它需要一个时间戳:

select 
  SYS_EXTRACT_UTC(to_char(last_date, 'yyyy-mm-dd hh24:mi:ss')) last
from all_jobs;

ORA-30175: invalid type given for an argument

1 个答案:

答案 0 :(得分:4)

根据定义,DATE值具有无时区信息,因此您无法提取任何UTC时间(或任何其他时区值)。

唯一的解决方案是明确告诉Oracle您的值的时区,然后您可以转换为不同的时区,例如:

SELECT SYS_EXTRACT_UTC(
    TO_TIMESTAMP(last_date) AT TIME ZONE 'Europe/Zurich'
    )
FROM all_jobs;