我试图找出作业何时运行,并希望以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
答案 0 :(得分:4)
根据定义,DATE
值具有无时区信息,因此您无法提取任何UTC时间(或任何其他时区值)。
唯一的解决方案是明确告诉Oracle您的值的时区,然后您可以转换为不同的时区,例如:
SELECT SYS_EXTRACT_UTC(
TO_TIMESTAMP(last_date) AT TIME ZONE 'Europe/Zurich'
)
FROM all_jobs;