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

PostgreSQL查询报错:已存在的createdAt列提示不存在

PostgreSQL列名大小写问题导致查询错误解决方法

问题场景

数据表spaces中存在名为createdAt的列,但执行以下查询语句时,提示spaces.createdat不存在:

SELECT date_trunc('week', spaces.createdAt ) as start_of_week, sum(spaces.rent_amount) 
FROM spaces
GROUP BY date_trunc('week', spaces.createdAt )
ORDER BY date_trunc('week', spaces.createdAt )

报错信息:

Error in query (7): ERROR: column spaces.createdat does not exist
LINE 1: SELECT date_trunc('week', spaces.createdAt ) as start_of_wee...
HINT: Perhaps you meant to reference the column "spaces.createdAt".

原因分析

PostgreSQL对标识符(列名、表名等)的大小写处理规则:

  • 未用双引号包裹的标识符,会被自动转换为小写处理
  • 如果创建列时使用双引号定义了大小写混合的列名(如"createdAt"),后续查询该列时必须用双引号包裹,否则PostgreSQL会去查找小写的createdat列,自然找不到目标列

解决方法

将查询语句中所有引用createdAt列的地方用双引号包裹,修正后的语句如下:

SELECT date_trunc('week', spaces."createdAt" ) as start_of_week, sum(spaces.rent_amount) 
FROM spaces
GROUP BY date_trunc('week', spaces."createdAt" )
ORDER BY date_trunc('week', spaces."createdAt" )

预防建议

  • 如果不需要区分列名大小写,创建表时不要用双引号定义列名,让PostgreSQL自动转为小写,后续查询无需加引号即可正常访问
  • 如果必须保留大小写混合的列名,所有涉及该列的SQL语句都要记得用双引号包裹列名

内容的提问来源于stack exchange,提问作者A A Maruf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:05:18