2

我需要在我的程序中进行报告。然后,我使用此 sql 代码过滤将在报表查看器中显示的数据:

SELECT * 
FROM Order 
WHERE OrDate=DATE() OR OrDate>=DATE() - 7;

当我单击下一步时,出现此错误

生成的 SELECT 语句。')' 附近的 WHERE 子句出错。无法解析查询文本。

请帮我解决这个错误。

4

2 回答 2

1

您是否希望 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()))

于 2013-03-02T13:07:54.333 回答
0

问题不是因为,DATE()而是因为 tablename ORDER

在大多数 RDBMS 中,ORDER是一个保留关键字。使用保留关键字时,请使用供应商特定的分隔符对其进行转义。在SQL Server中,您可以使用括号。

SELECT  * 
FROM   [Order] 
WHERE  OrDate = DATE() OR 
       OrDate >= DATE() - 7;

从访问文档,

如果保留字已在使用中,您可以通过用方括号 ([ ]) 将每个出现的字括起来来避免错误消息。但是,最好的解决方案是将名称更改为非保留字。

于 2013-03-02T12:49:21.880 回答