用`T`解析字符串给时间戳PostgreSQL

时间:2019-02-19 10:23:37

标签: sql postgresql

我有这个字符串2019-02-14T17:49:20.987,我想将其解析为时间戳。因此,我正在使用to_timestamp函数,它似乎工作正常,除了...问题在于那里的这个T字母。如何使PostgreSQL跳过它?
我应该在to_timestamp中使用哪种模式?

我当然可以用空格替换T,然后解析它,但是我发现这种方法太笨拙了。

2 个答案:

答案 0 :(得分:4)

Quote from the manual

  

如果模板字符串中的某些字符不是模板模式,则只需跳过输入数据字符串中的相应字符(无论它们是否等于模板字符串字符)。

因此,只需在其中放置任何非模板字符(例如X)即可。

select to_timestamp('2019-02-14T17:49:20.987', 'YYYY-MM-DDXHH24:MI:SS.MS')

在线示例:https://rextester.com/OHYD18205

或者,您可以简单地转换值:

select '2019-02-14T17:49:20.987'::timestamp

答案 1 :(得分:2)

带有T的字符串是timestamptimestamptz的有效输入文字:

select '2019-02-14T17:49:20.987'::timestamp;

        timestamp        
-------------------------
 2019-02-14 17:49:20.987
(1 row)