如何在oracle中将sysdate转换为UTC时间

How to convert sysdate to UTC time in oracle

我有一个从 sysdate 中减去日期的查询。然而,我拥有的日期对象是 UTC,但 sysdate 没有给我 UTC 时间。如何将 sysdate 转换为 UTC 日期。

我已经尝试使用 sys_extract_utc

select sys_extract_utc(systimestamp) from dual;

这很好用,并为我提供了正确的 UTC 时间戳。但是它返回的对象与 sysdate 不同,所以当我从这个对象中减去日期时,我得到一个 INTERVAL DAY to SECOND 但它应该是一个数字。

sys_extract_utc(systimestamp) 的结果上使用 CAST 是解决此问题的方法,因为 sys_extract_utc returns timestamp.

select cast(sys_extract_utc(systimestamp) as DATE) from dual;

sys_extract_utc returns 时间戳,而你正在寻找日期,所以你只需要一个演员: select CAST(sys_extract_utc(systimestamp) as DATE) from dual;

如果您不想要 "time" 部分:

SELECT TO_CHAR(SYS_EXTRACT_UTC(SYSTIMESTAMP), 'YYYY-MM-DD') FROM dual;