首页 > 解决方案 > Postgres - 将日期从一种格式转换为另一种格式

问题描述

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

我有一个包含格式日期的表格:Tue Jan 29 15:24:20 CET 2019根据文档中的字段,它代表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

谁能给我一个提示如何做到这一点?

标签: sqlpostgresql

解决方案


您的代码的一个问题是只to_date返回一个date(没有时间)。to_timestamp会更合适。

但即便如此,文档也说:

TZ- 大写时区缩写(仅支持to_char

但文档还说:

提示
to_timestamp并且to_date存在用于处理无法通过简单转换转换的输入格式。对于大多数标准日期/时间格式,只需将源字符串转换为所需的数据类型即可,而且要容易得多。

所以你应该做的是使用演员表:

cast(updated as timestamp with time zone)

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

cast(updated as timestamp)

推荐阅读