ORACLE:将VARCHAR转换为TIMESTAMP / TIMEZONE

时间:2016-05-26 17:06:54

标签: sql oracle date-format

有关如何将VARCHAR格式2016-03-24T11:31:31+0100转换为timestamp/time zone

的任何建议

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

(我相信当时间戳转换为VARCHAR时,T标记时间部分的开始)

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

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

不,我无法更改“FIELD_YYY”或“TABLE_XXX”,为什么?我不能,那就是生命...: - (

2 个答案:

答案 0 :(得分:3)

使用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 

答案 1 :(得分:0)

您可以使用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;