Bizarre Oracle错误:ORA-00936:缺少表达式

问题描述 投票:0回答:1

我正在处理一个大型,复杂的查询。我在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,但这没什么区别。

sql oracle
1个回答
0
投票

大概,您希望最近70天内有date_column个值。如果是这样:

SELECT t.id
FROM table1 t
WHERE t.date_column >= TRUNC(sysdate) - INTERVAL '70' DAY;

您的代码将至少由于两个原因而产生错误-DATEADD()不是Oracle,并且“ 1”可能不是列名。这些类型的问题可能会使解析器感到困惑,因此有时错误消息不能100%清除。

© www.soinside.com 2019 - 2024. All rights reserved.