Postgres-具有to_timestamp()忽略/不读取日期/时间字符串中间的特定字符

时间:2013-01-09 18:41:08

标签: postgresql

我的原始文本列的值为“2012-07-26T10:33:34”和“2012-07-26T10:56:16”。在使用Joda-Time的Java中,我可以通过调用

轻松地将其转换为日期

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")

在Postgres中,我如何忽略中间的'T'字符?

我尝试了'YYYY-MM-DD\THH:mm:ss',但收到了错误

>错误:未能找到从未知到文本的转换函数

1 个答案:

答案 0 :(得分:1)

如果我没有弄错,那么在ANSI ANSI时间戳文字中允许使用T,因此以下内容应该有效。

select timestamp '2012-07-26T10:33:34';

你说你有一个文本列,所以你可能需要这样的东西:

create table foo (ts text);
insert into foo values ('2012-07-26T10:33:34')
select cast(ts as timestamp)
from foo;

这也有效:

select to_timestamp(ts, 'yyyy-mm-dd hh24:mi:ss')
from foo;

SQLFiddle示例:http://sqlfiddle.com/#!12/0b369/1