可能是一个经典......你知道在Oracle上检索SYSDATE的UTC值的一个简单技巧(最好是在8号版本上也可以使用)。
现在我有自定义功能:(
干杯,
的Stefan
答案 0 :(得分:37)
您可以使用
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2000-03-28 11:30:00.00 -02:00') FROM DUAL;
您可能还需要更改时区
ALTER SESSION SET TIME_ZONE = 'Europe/Berlin';
或者阅读
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM dual;
答案 1 :(得分:36)
select sys_extract_utc(systimestamp) from dual;
但是,无法在Oracle 8上运行。
答案 2 :(得分:19)
通常,我使用DATE列,而不是更大但更精确的TIMESTAMP。
以下内容将返回当前的UTC日期 - 日期。
CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)
使用UTC日期非常棒,因为我不必担心时区的复杂性。只有最终显示给用户需要抵消或其他麻烦。
答案 3 :(得分:4)
如果您想要时间戳而不是sysdate的日期,可以使用systimestamp指定时区:
select systimestamp at time zone 'UTC' from dual
输出:29-AUG-17 06.51.14.781998000 PM UTC
答案 4 :(得分:2)
我正在使用:
SELECT CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE) FROM DUAL;
这对我来说很好。