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

Oracle执行SQL查询报ORA-00936 missing expression错误求助

问题根因
  • 你当前使用的CONVERT、DATEADD、GETDATE()均为SQL Server专属函数,Oracle数据库原生不支持以上语法,这是触发ORA-00936: missing expression报错的核心原因
  • 你后续修改的写法存在TO_CHAR用法错误:TO_CHAR(8)是无效语法,TO_CHAR的第一个入参需要是待转换的日期/数值类型对象,不能直接传入长度值
解决方案

Oracle语法下和你原有逻辑等价的WHERE子句写法如下:

WHERE TO_CHAR(20211231) <= TO_CHAR(SYSDATE - 90, 'YYYYMMDD')

完整可运行的查询语句:

SELECT FECHADOC, FECHACONT, CLASEDOC, SOCIEDAD, MONEDA, TIPOCAMBIO, PERIODO, 
       REFERENCIA, TEXTOCAB, ID_REGISTRO 
FROM ESQUEMA.TABLE 
WHERE TO_CHAR(20211231) <= TO_CHAR(SYSDATE - 90, 'YYYYMMDD')
优化建议
  • 你当前的WHERE条件是固定值和动态计算值的比对,整个条件要么恒真要么恒假,大概率是写反了过滤逻辑:如果你是要过滤表中日期字段(比如FECHADOC)大于等于90天前的日期,建议使用如下写法,避免函数转换导致日期字段索引失效:
WHERE FECHADOC >= TRUNC(SYSDATE) - 90
  • 如果你确实需要做日期格式比对,建议统一转为DATE类型进行比较,运算效率和准确性都高于字符串比对:
WHERE TO_DATE('20211231', 'YYYYMMDD') <= TRUNC(SYSDATE) - 90

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:27:05