如何获取Oracle上的SYSDATE的UTC值

可能是一个经典的…你会知道一个简单的技巧来检索Oracle的SYSDATE的UTC值(最好也会得到在第八版的工作)。

现在我已经定制function:(

干杯,

斯特凡

您可以使用

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; 
 select sys_extract_utc(systimestamp) from dual; 

不过,在Oracle 8上不起作用。

通常,我使用DATE列,而不是更大但更精确的TIMESTAMP。

以下内容将返回当前的UTCdate – DATE。

 CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE) 

使用UTCdate非常好,因为我不必担心时区的复杂性。 只有最后的显示给用户需要补偿或其他麻烦。

如果你想要一个时间戳而不是sysdate的date,你可以使用systimestamp指定一个时区:

 select systimestamp at time zone 'UTC' from dual 

输出: 29-AUG-17 06.51.14.781998000 PM UTC