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

SQL按日期条件过滤查询报“列不存在”错误如何解决

报错根因

这是典型的SQL引号用法错误:
按照ANSI SQL标准规则,双引号"是用来包裹数据库对象标识符的,也就是表名、列名这类对象的名称——如果对象名带空格、特殊字符,或者和SQL保留字重名,就可以用双引号把名字包起来告诉解析器这是个对象名。所以你写的where date_col="2015-04-02"里,数据库直接把双引号里的2015-04-02当成了列名,去表里找不到这个列自然就报错,和你表里存没存这个日期值没关系。

修正方法

把日期值外面的双引号换成单引号'就行,SQL里单引号才是用来包裹字符串、日期这类常量值的标准符号,改完的语句如下,直接执行就可以正常过滤:

select *
from table_name 
where date_col='2015-04-02'
limit 5
补充说明
  • PostgreSQL、Oracle、SQL Server等严格遵循SQL标准的数据库都严格区分单双引号的作用,上面改完的语句可以直接在这些库运行
  • 像MySQL这类数据库在默认非严格模式下可能允许双引号包字符串,但这种写法不通用,跨库迁移很容易出同类问题,日常写SQL统一用单引号包常量值就能避开这类坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:33:23