提问人:rex 提问时间:1/18/2023 更新时间:1/18/2023 访问量:62
从 PostgresSQL 中 TEXT 类型的现有 Date 列创建新的 DATE 类型的 Date 列
Create new Date column of DATE type from existing Date column of TEXT type in PostgresSQL
问:
我有一个PostgresSQL表,该表具有TEXT类型的Date列
值如下所示: 2019-07-19 00:00
我想将此列强制转换为键入 DATE,以便我可以根据最新值进行查询,等等......或者创建一个 DATE 类型的新列并强制转换为其中(所以我将来都有这两个列)。我将不胜感激关于这两种选择的任何建议!
希望这不是骗局,但我还没有在 SO 上找到任何答案。
在一些上下文中,我稍后需要将更多数据添加到仅包含 TEXT 列的表中,这就是为什么我想保留原始数据但对建议持开放态度的原因。
答:
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;
评论
0赞
rex
1/18/2023
谢谢@Klin - 这会自动尝试解释文本的格式吗?
评论