Oracle 如何向时间戳添加或减去时区偏移量

Oracle 如何向时间戳添加或减去时区偏移量,oracle,oracle11g,timezone,timezone-offset,timestamp-with-timezone,Oracle,Oracle11g,Timezone,Timezone Offset,Timestamp With Timezone,我正在编写一个程序,从数据库中获取时区偏移量,我的要求是使用时区偏移量操作本地时间以获取UTC时间 比如说, If local time is : 2/3/2013 2:05:53.000000 PM timezone offset is : 5:30 Output should be : 2/3/2013 8:35:53.000000 AM (2/3/2013 2:05:53.000000 PM - 5:30) 有人能帮我提供相应的功能吗。你可以用时区值来形成时间戳 通过组合时间戳

我正在编写一个程序,从数据库中获取时区偏移量,我的要求是使用时区偏移量操作本地时间以获取UTC时间

比如说,

If local time is   : 2/3/2013 2:05:53.000000 PM 
timezone offset is : 5:30
Output should be   : 2/3/2013 8:35:53.000000 AM (2/3/2013 2:05:53.000000 PM - 5:30)
有人能帮我提供相应的功能吗。

你可以用时区值来形成时间戳 通过组合时间戳和时区。接下来,使用 将其转换为UTC时间

SQL> select from_tz(timestamp'2013-02-03 14:05:53','05:30'),
            sys_extract_utc(from_tz(timestamp'2013-02-03 14:05:53','05:30'))
     from dual;

FROM_TZ(TIMESTAMP'2013-02-0314:05:53','05:30')    SYS_EXTRACT_UTC(FROM_TZ(TIMESTAMP'2013-02-0314:05:53','05:30'))
------------------------------------------------- -----------------------------------------------------------------
03-FEB-13 02.05.53.000000000 PM +05:30            03-FEB-13 08.35.53.000000000 AM
您可以使用来形成带有时区值的时间戳 通过组合时间戳和时区。接下来,使用 将其转换为UTC时间

SQL> select from_tz(timestamp'2013-02-03 14:05:53','05:30'),
            sys_extract_utc(from_tz(timestamp'2013-02-03 14:05:53','05:30'))
     from dual;

FROM_TZ(TIMESTAMP'2013-02-0314:05:53','05:30')    SYS_EXTRACT_UTC(FROM_TZ(TIMESTAMP'2013-02-0314:05:53','05:30'))
------------------------------------------------- -----------------------------------------------------------------
03-FEB-13 02.05.53.000000000 PM +05:30            03-FEB-13 08.35.53.000000000 AM
使用,您可以做得更一般:

SELECT FROM_TZ(TIMESTAMP '2013-02-03 14:05:53', '05:30') AT TIME ZONE 'UTC' 
FROM dual;

使用,您可以做得更一般:

SELECT FROM_TZ(TIMESTAMP '2013-02-03 14:05:53', '05:30') AT TIME ZONE 'UTC' 
FROM dual;


谢谢你的帮助reply@Eat一个桃子,但在给定的示例中,它是在减法时区偏移量,但在查询中,它显示它是在添加。。bit Confused获得了结果输出。。感谢您的回答+5.30表示时间比UTC早五个半小时。因此,在印度(有+5.30 tz)的下午2:05,英格兰的时间(UTC时区)将是8.35 Am谢谢你的支持reply@Eat一个桃子,但在给定的示例中,它是在减法时区偏移量,但在查询中,它显示它是在添加。。bit Confused获得了结果输出。。感谢您的回答+5.30表示时间比UTC早五个半小时。因此,在印度(有+5.30 tz)下午2:05,英格兰时间(UTC时区)将是上午8:35