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

Redshift使用TO_CHAR转换日期为字符串报错:列"yyyymm"不存在

Redshift SQL查询报错排查解决

错误原因

Redshift里双引号(") 是用来引用标识符(比如列名、表名)的,你原SQL里用双引号包裹了to_char的格式串"yyyyMMdd"和日期值"20221220",数据库会把它们当成tableA中的列名,而你的表根本没有对应列,所以触发了ERROR: column "yyyymm" does not exist报错。

修正后的SQL

select * from tableA where to_char(date, 'yyyyMMdd') = '20221220';

关键说明

  • 在Redshift(以及绝大多数SQL方言)中,单引号(') 才是用来定义字符串常量的正确方式,双引号只在需要保留标识符大小写或处理特殊命名的列/表时才用。
  • 额外优化:如果date列有索引,直接用日期范围匹配的性能会比to_char转换后匹配更好,避免函数转换导致索引失效:
select * from tableA 
where date >= '2022-12-20'::timestamp 
and date < '2022-12-21'::timestamp;

内容的提问来源于stack exchange,提问作者Day Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:10:33