Postgres-将日期从一种格式转换为另一种格式

时间:2019-02-14 08:15:45

标签: sql postgresql

问题本身被多次询问,但我碰巧遇到了一个我无法解决的问题。

我有一个表格,其中包含日期,格式为:Tue Jan 29 15:24:20 CET 2019,根据documentation中的字段,该日期代表Dy Mon DD HH24:MI:SS TZ YYYY

表中的

updated列为text

我想更新每一行并将此日期转换为YYYY-MM-DD HH24:MI:SS,但首先我想将日期从一种格式转换为另一种格式,但是我遇到了sql错误:

select to_char(to_date(updated, 'Dy Mon DD HH24:MI:SS TZ YYYY'), 'YYYY-MM-DD HH24:MI:SS') from audit where id =1267;
ERROR:  formatting field "TZ" is only supported in to_char

任何人都可以提示我如何操作吗?

1 个答案:

答案 0 :(得分:2)

您的代码存在一个问题,就是to_date仅返回date(无时间)。 to_timestamp会更合适。

但是即使如此,文档仍会说:

  

TZ-大写的时区缩写(仅to_char中受支持)

但是文档中还说:

  

提示
  存在to_timestampto_date来处理无法通过简单转换进行转换的输入格式。对于大多数标准日期/时间格式,只需将源字符串强制转换为所需的数据类型即可,并且更加容易。

因此,您应该改用强制转换:

cast(updated as timestamp with time zone)

或者,如果您想忽略时区:

cast(updated as timestamp)