从 PostgresSQL 中 TEXT 类型的现有 Date 列创建新的 DATE 类型的 Date 列

Create new Date column of DATE type from existing Date column of TEXT type in PostgresSQL

提问人:rex 提问时间:1/18/2023 更新时间:1/18/2023 访问量:62

问:

我有一个PostgresSQL表,该表具有TEXT类型的Date列

值如下所示: 2019-07-19 00:00

我想将此列强制转换为键入 DATE,以便我可以根据最新值进行查询,等等......或者创建一个 DATE 类型的新列并强制转换为其中(所以我将来都有这两个列)。我将不胜感激关于这两种选择的任何建议!

希望这不是骗局,但我还没有在 SO 上找到任何答案。

在一些上下文中,我稍后需要将更多数据添加到仅包含 TEXT 列的表中,这就是为什么我想保留原始数据但对建议持开放态度的原因。

PostgreSQL 日期 转换

评论


答:

1赞 klin 1/18/2023 #1

您可以使用简单命令更改列类型:

alter table my_table alter my_col type date using my_col::date

这似乎是最好的解决方案,因为维护不同类型的重复列是未来麻烦的潜在来源。

请注意,列中的所有值都必须是 Postgres 的日期,或者可以被 Postgres 识别为日期,否则转换将失败。null

db<>fiddle 中测试它。

但是,如果您坚持要创建新列,请使用以下命令:update

alter table my_table add my_date_col date;
update my_table
set my_date_col = my_col::date;

Db<>小提琴。

评论

0赞 rex 1/18/2023
谢谢@Klin - 这会自动尝试解释文本的格式吗?