首页 > 解决方案 > ORA-00936: 缺少表达式解决方案 - 转换函数

问题描述

在 oracle 中执行此查询时出现错误

ORA-00936: missing expression
00936. 00000 - "missing expression"

如果我将查询运行到它的 from 它给了我结果,那么我推断问题来自哪里,但是,我无法确定它是什么

SELECT FECHADOC, FECHACONT, CLASEDOC, SOCIEDAD, MONEDA, TIPOCAMBIO, PERIODO, 
       REFERENCIA, TEXTOCAB, ID_REGISTRO 
FROM ESQUEMA.TABLE 
WHERE CONVERT(CHAR(8),20211231,112) <= CONVERT(CHAR(8),DATEADD(DAY,-90,GETDATE()),112)

我已经用过:

 WHERE CONVERT( TO_CHAR(8),20201231,112) <= 
      (CONVERT(TO_CHAR(8),DATEADD(DAY,-90,GETDATE()),112) )

它一直给我一个错误

标签: oracleexpressionwhere-clauseconverters

解决方案


如果这真的是 Oracle,那么dateaddgetdate不是 Oracle 功能。看起来像 MS SQL Server 的。此外,table的保留字,您不能命名表(或任何其他对象)

无论如何:看起来这就是您可能正在寻找的:

SELECT FECHADOC, FECHACONT, CLASEDOC, SOCIEDAD, MONEDA, 
       TIPOCAMBIO, PERIODO, REFERENCIA, 
       TEXTOCAB, ID_REGISTRO 
FROM ESQUEMA.TABLE 
where to_date('20211231', 'yyyymmdd') <= trunc(sysdate) - 90;

推荐阅读