【问题标题】:ORACLE: convert VARCHAR to TIMESTAMP/TIMEZONE [duplicate]ORACLE:将 VARCHAR 转换为 TIMESTAMP/TIMEZONE [重复]
【发布时间】:2016-05-26 17:06:53
【问题描述】:

关于如何将2016-03-24T11:31:31+0100 格式的VARCHAR 转换为timestamp/time zone 的任何建议

"FIELD_YYY" 显然曾经是带有时区的时间戳 被馈送到“TABLE_XXX”,我必须使用这个表中的这个字段供我使用。

(我相信 T 标志着时间戳转换为 VARCHAR 的时间部分的开始)

我需要将其转换回时间戳/时区。

select to_timestamp('2016-03-24T11:31:31+0100', 'yyy-mm-dd hh24:mi:ss') from DUAL

不,我无法更改“FIELD_YYY”或“TABLE_XXX”,为什么?我就是做不到,这就是生活...... :-(

【问题讨论】:

    标签: sql oracle date-format


    【解决方案1】:

    使用to_timestamp_tz()函数,在格式字符串中用双引号将“T”括起来就可以了。

    select to_timestamp_tz('2016-03-24T11:31:31+0100'
                         , 'yyyy-mm-dd"T"hh:mi:sstzhtzm') as res
      from dual
    

    结果:

    RES                                  
    --------------------------------------
    24-MAR-16 11.31.31.000000000 AM +01:00 
    

    【讨论】:

      【解决方案2】:

      你可以使用 to_timestamp_tz

      select to_timestamp_tz(your_string, 'YYYY-MM-DD HH24:MI:SS TZH:TZM') from dual;
      
      select to_timestamp_tz('2011-05-12 19:04:41.032645 +01:00',
            'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') from dual;
      

      【讨论】:

      • 不处理“T”字符。
      猜你喜欢
      • 2012-10-07
      • 2021-08-30
      • 1970-01-01
      • 2015-06-27
      • 2010-09-16
      • 2011-11-28
      • 2012-03-02
      • 2017-03-19
      • 2018-03-08
      相关资源
      最近更新 更多