【问题标题】:How to get UTC date/time from a date/time string that contains timezone offset in Oracle如何从包含 Oracle 中时区偏移的日期/时间字符串中获取 UTC 日期/时间
【发布时间】:2015-11-24 05:01:53
【问题描述】:

给定这样的字符串: '2015-11-23T07:00:10.563-04:00' 我正在尝试确定我期望的 UTC 日期/时间: '2015-11-23 11:00:10.5630000'

我尝试了以下方法:

SELECT sys_extract_utc(
        to_timestamp_tz('2015-11-23T07:00:10.563-04:00', 
                        'yyyy-mm-dd"T"hh24:mi:ss.FF TZH:TZM')
         )  
FROM DUAL;

但这会产生结果:

2015/11/23 03:00:10.563000000

即使我将时区偏移量更改为正值,我也会得到相同的结果。我一定是误会了,所以非常感谢您的帮助。

【问题讨论】:

    标签: sql oracle timezone offset utc


    【解决方案1】:

    小数秒和时区小时之间没有空格。所以从你的模式中删除空间,它会给出想要的结果。

    SQL> SELECT sys_extract_utc(to_timestamp_tz('2015-11-23T07:00:10.563-04:00', 'yyyy-mm-dd"T"hh24:mi:ss.FFTZH:TZM'))  
    FROM DUAL; 
    
    SYS_EXTRACT_UTC(TO_TIMESTAMP_TZ('2015-11-23T07:00:10.563-04:00','YYYY-MM-DD
    ---------------------------------------------------------------------------
    23-NOV-15 11.00.10.563000000 AM
    

    【讨论】:

    • 刚刚在你发布的时候发现了 - 把我的头发拉了出来。谢谢。
    【解决方案2】:

    已修复 - “.....hh24:mi:ss.FF TZH:TZM”之间的空格字符导致了问题。

    现在完美运行:

    SELECT sys_extract_utc(to_timestamp_tz('2015-11-23T07:00:10.563+04:00', 'yyyy-mm-dd"T"hh24:mi:ss.FFTZH:TZM'))  FROM DUAL;
    

    【讨论】:

      猜你喜欢
      • 2011-08-10
      • 2016-05-13
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      相关资源
      最近更新 更多