ORA-00936:缺少表达式错误代码

时间:2015-04-13 13:18:06

标签: sql oracle

在这里新建,并且想知道是否有人可以通过我的SQL查询了解这个ORA-00936错误。

select Count(Auftragsnr) as Open_Orders
from wa_kopf
where convert(varchar(4), Aender_Datum, 104) = convert(varchar(4), getdate(), 104)
and zustand < (60);

收到以下错误:

  

14:47:37 [SELECT - 0 row(s),0.000 secs] [错误代码:936,SQL   州:42000] ORA-00936:缺少表达

非常感谢任何帮助。

此致

JRidge

1 个答案:

答案 0 :(得分:1)

您正在使用SQL Server syntax,这不适用于Oracle数据库。您似乎试图将日期格式化为dd.mm.yyyy(但是以4个字符的字符串形式,以某种方式?)。 Oracle中也没有getdate函数,但它确实有sysdate

因此,我认为您尝试做的Oracle等同于:

where to_char(Aender_Datum, 'dd.mm.yyyy') = to_char(sysdate, 'dd.mm.yyyy')

但这只是意味着你将日期比作字符串,这通常不是一个好主意。如果您要查找今天的任何值,可以使用the trunc() function,默认情况下会从日期中删除时间部分;如果你的专栏只代表一个日期而且时间总是午夜,那么你可以这样做:

where Aender_Datum = trunc(sysdate)

如果您的列有不同的时间,那么您也可以截断它:

where trunc(Aender_Datum) = trunc(sysdate)

...但如果对列进行索引,则可能会对性能产生影响,另一种方法是使用范围比较:

where Aender_Datum >= trunc(sysdate)
and Aender_Datum  < trunc(sysdate) + 1