【问题标题】:How to convert sysdate to UTC time in oracle如何在 oracle 中将 sysdate 转换为 UTC 时间
【发布时间】:2016-10-18 06:58:59
【问题描述】:
我有一个查询要从 sysdate 中减去一个日期。但是我拥有的日期对象是 UTC 但sysdate 没有给我UTC 时间。如何将 sysdate 转换为 UTC 日期。
我已经尝试过使用sys_extract_utc
select sys_extract_utc(systimestamp) from dual;
这很好用,并给了我正确的 UTC 时间戳。但是它返回的对象与sysdate 不同,所以当我从这个对象中减去日期时,我得到一个INTERVAL DAY to SECOND,但它应该是一个数字。
【问题讨论】:
标签:
sql
oracle
datetime
sysdate
【解决方案1】:
对 sys_extract_utc(systimestamp) 的结果使用 CAST 是解决此问题的方法,因为 sys_extract_utc 返回 timestamp。
select cast(sys_extract_utc(systimestamp) as DATE) from dual;
【解决方案2】:
sys_extract_utc 返回时间戳,并且您正在寻找日期,所以您只需要一个演员表:
select CAST(sys_extract_utc(systimestamp) as DATE) from dual;
【解决方案3】:
如果您不想要“时间”部分:
SELECT TO_CHAR(SYS_EXTRACT_UTC(SYSTIMESTAMP), 'YYYY-MM-DD') FROM dual;