You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres(PGadmin)修改列类型从date转integer报错如何解决

问题原因

PostgreSQL未提供date类型到integer类型的默认强制转换规则,你直接使用year::integer是尝试把完整日期值(如2023-10-01)直接转为整数,不符合转换逻辑,因此触发报错。

解决方案

你需要在USING子句中先从date类型的year字段中提取年份数值,再进行类型转换,两种常用写法均可生效:

写法1:使用EXTRACT函数提取年份

ALTER TABLE "Event" 
ALTER COLUMN year TYPE INT USING EXTRACT(YEAR FROM year)::integer;

写法2:先转年份字符串再转整数

如果需要兼容特殊格式的日期存储,可先将日期转为四位数年份字符串再转整数:

ALTER TABLE "Event" 
ALTER COLUMN year TYPE INT USING to_char(year, 'YYYY')::integer;

注意:因为你创建表时使用了带双引号的大写表名"Event",PostgreSQL会对表名做大小写敏感匹配,执行修改语句时必须保留双引号,否则会提示表不存在。

验证修改

修改完成后可执行查询确认字段类型和数值是否符合预期:

-- 查看字段类型
SELECT data_type 
FROM information_schema.columns 
WHERE table_name = 'Event' AND column_name = 'year';

-- 抽查年份数值
SELECT year FROM "Event" LIMIT 10;

内容的提问来源于stack exchange,提问作者P.D.R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:06:03