问题本身被多次询问,但我碰巧遇到了一个我无法解决的问题。
我有一个表格,其中包含日期,格式为: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
任何人都可以提示我如何操作吗?
答案 0 :(得分:2)
您的代码存在一个问题,就是to_date
仅返回date
(无时间)。 to_timestamp
会更合适。
但是即使如此,文档仍会说:
TZ
-大写的时区缩写(仅to_char
中受支持)
但是文档中还说:
提示:
存在to_timestamp
和to_date
来处理无法通过简单转换进行转换的输入格式。对于大多数标准日期/时间格式,只需将源字符串强制转换为所需的数据类型即可,并且更加容易。
因此,您应该改用强制转换:
cast(updated as timestamp with time zone)
或者,如果您想忽略时区:
cast(updated as timestamp)