如何在Oracle上获取SYSDATE的UTC值

时间:2009-07-21 08:08:00

标签: oracle timezone utc

可能是一个经典......你知道在Oracle上检索SYSDATE的UTC值的一个简单技巧(最好是在8号版本上也可以使用)。

现在我有自定义功能:(

干杯,

的Stefan

5 个答案:

答案 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;

这对我来说很好。