我正在处理一个大型,复杂的查询。我在WHERE
子句中添加了一个简单的日期过滤器,现在我得到了ORA-00936: missing expression
删除其余查询,仅使用此单个日期过滤器选择id
仍会产生错误-至少可以缩小该范围。
SELECT t.id
FROM table1 t
WHERE t.date_column >= DATEADD(Date(), "1", -70)
[在线查找,显然,此错误应该表明缺少FROM
子句,或SELECT
部分中的缺少列列表,等等。但是此查询没有丢失任何东西...
这里到底发生了什么?我认为它与我使用DATEADD
的方式有关,但是我不知道从哪里开始对此进行研究。我尝试使用@DATEADD
而不是DATEADD
,但这没什么区别。
大概,您希望最近70天内有date_column
个值。如果是这样:
SELECT t.id
FROM table1 t
WHERE t.date_column >= TRUNC(sysdate) - INTERVAL '70' DAY;
您的代码将至少由于两个原因而产生错误-DATEADD()
不是Oracle,并且“ 1”可能不是列名。这些类型的问题可能会使解析器感到困惑,因此有时错误消息不能100%清除。