使用TIMEZONE查询Oracle TIMESTAMP



我在Oracle DB表中有一列类型为TIMESTAMP(6) WITH TIME ZONE。有些数据行包含来自不同时区的数据,有些是UTC,有些是其他时区偏移。

有没有一种方法可以查询Oracle表,使结果始终以UTC返回,并进行适当的时间转换?是否可以对查询本身执行某些操作,或者以某种方式更改会话?我已经尝试将会话时区更改为Utc,但这似乎只影响CURRENT_TIMESTAMP值。

ALTER SESSION SET TIME_ZONE = 'Utc'

例如,如果一个值存储为:

21-JAN-10 03.28.38.635000000 PM -05:00

查询将以形式返回

21-JAN-10 08.28.38.635000000 PM Utc

示例表定义

CREATE TABLE "MyDb"."Books"
  (
    "GUID" RAW(32) DEFAULT SYS_GUID(),
     "DATE_CREATED" TIMESTAMP (6) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
);

您应该能够使用AT TIME ZONE语法

SELECT column_name at time zone 'UTC'
  FROM your_table

SQL> select * from foo;
COL1
---------------------------------------------------------------------------
09-FEB-12 01.48.40.072000 PM -05:00
09-FEB-12 10.49.26.613000 AM US/PACIFIC
SQL> select col1 at time zone 'UTC'
  2    from foo;
COL1ATTIMEZONE'UTC'
---------------------------------------------------------------------------
09-FEB-12 06.48.40.072000 PM UTC
09-FEB-12 06.49.26.613000 PM UTC

相关内容

  • 没有找到相关文章

最新更新