在这里新建,并且想知道是否有人可以通过我的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
答案 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