sql - Oracle如何将UTC时间转换为本地时间(缺少偏移量信息)

标签 sql oracle

我有一个包含日期列的表。我认为该列中的日期以 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/

相关文章:

mysql - SQL 选择字段包含另一个表字段中的单词的行

java - hibernate : How to get last n rows in spring boot JpaRepository?

MySQL:无法创建表(errno = 150)

c# - 添加了 OracleCommand 参数但抛出异常

sql - 为什么我在尝试执行这个在表中插入记录的简单查询时收到此错误消息?

sql - PARTITION BY Name, Id 来比较和检测问题

sql - 在SQL中计算给定月份的第一个工作日

c# - 保持应用程序数据库不可知(ADO.NET 与封装数据库逻辑)

sql - 甲骨文朱利安一天

c++ - 使用 C++ 和 OCCI 编写 CLOB