我有一个包含日期列的表。我认为该列中的日期以 UTC 格式保存。
我希望在检索日期时以本地时间打印。这意味着当我从德国调用日期时,结果应该是这样的:
2015-04-29 11:24:06 +0200UTC EUROPE/BERLIN
我尝试了以下sql:
SELECT TO_CHAR(CAST(dateColum as TIMESTAMP WITH LOCAL TIME ZONE), 'YYYY-MM-DD HH24:MI:SS TZR') from myTable;
结果如下所示:
2015-04-29 11:24:06 EUROPE/BERLIN
缺少 +/- 偏移。
任何的想法?
最佳答案
Oracle 设置 :
CREATE TABLE table_name ( value ) AS
SELECT DATE '2016-07-13' FROM DUAL;
查询 :
SELECT TO_CHAR(
FROM_TZ( CAST( value AS TIMESTAMP ), 'UTC' )
AT TIME ZONE 'EUROPE/BERLIN',
'YYYY-MM-DD HH24:MI:SS TZH:TZM TZR'
) AS berlin_time
FROM table_name;
输出 :
BERLIN_TIME
----------------------------------------
2016-07-13 02:00:00 +02:00 EUROPE/BERLIN
查询 2 :
SELECT TO_CHAR(
FROM_TZ( CAST( value AS TIMESTAMP ), 'UTC' ) AT LOCAL,
'YYYY-MM-DD HH24:MI:SS TZH:TZM TZR'
) AS local_time
FROM table_name;
输出 :
LOCAL_TIME
----------------------------------------
2016-07-13 02:00:00 +02:00 EUROPE/BERLIN
关于sql - Oracle如何将UTC时间转换为本地时间(缺少偏移量信息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38346516/