我需要在我的程序中进行报告。然后,我使用此 sql 代码过滤将在报表查看器中显示的数据:
SELECT *
FROM Order
WHERE OrDate=DATE() OR OrDate>=DATE() - 7;
当我单击下一步时,出现此错误
生成的 SELECT 语句。')' 附近的 WHERE 子句出错。无法解析查询文本。
请帮我解决这个错误。
您是否希望 Date 返回今天的日期?我以为那是 GETDATE() http://msdn.microsoft.com/en-gb/library/ms188383.aspx
如果您使用的是 SQL Server 2008
选择 SELECT * FROM [Order] WHERE OrDate >= CONVERT(date, DATEADD(DAY, -7, GETDATE()))
问题不是因为,DATE()
而是因为 tablename ORDER
。
在大多数 RDBMS 中,ORDER
是一个保留关键字。使用保留关键字时,请使用供应商特定的分隔符对其进行转义。在SQL Server
中,您可以使用括号。
SELECT *
FROM [Order]
WHERE OrDate = DATE() OR
OrDate >= DATE() - 7;
从访问文档,
如果保留字已在使用中,您可以通过用方括号 ([ ]) 将每个出现的字括起来来避免错误消息。但是,最好的解决方案是将名称更改为非保留字。