2013-03-02 40 views
2

我需要在我的程序中生成報告。 然後,我用這個SQL代碼來篩選將顯示在報表查看器中的數據:TableAdapter配置嚮導無法識別sql語句「DATE()」

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

當我點擊下一個,這個錯誤發生

生成的SELECT語句。 ')'附近的WHERE子句出錯。 無法解析查詢文本。

請幫我解決這個錯誤。

+0

你正在使用什麼[RDBMS](http://en.wikipedia.org/wiki/Relational_database_management_system)? 'RDBMS'代表*關係數據庫管理系統*。 'RDBMS是SQL'的基礎,並且適用於所有現代數據庫系統,例如MS SQL Server,IBM DB2,Oracle,MySQL等等...... – 2013-03-02 12:48:27

+0

Microsoft Access。 – kv1809 2013-03-02 12:52:16

+0

首先,當您有OrDate> = DATE() - 7時,您不需要OrDate = DATE(),因爲該測試僅適用於今天的測試,該測試包括今天開始的任何測試。其次,即使它不能解決你的問題,改變保留字「order」,因爲這只是一個好習慣。第三,試着把(DATE() - 7)放在括號裏,就像Adam建議的那樣。 – 2013-03-02 16:23:13

回答

0

問題不在於DATE(),而是因爲表名ORDER

在大多數RDBMS中,ORDER是保留關鍵字。使用保留關鍵字時,請使用供應商特定的分隔符將其轉義。在SQL Server中,可以使用括號。

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

從訪問文檔,

如果保留的字已被使用,您可以通過 避免出現錯誤消息,圍繞着括號中的字的每次出現([])。但是, 最好的解決方案是將名稱更改爲非保留字。

+0

我試過了,但仍然出現錯誤。 – kv1809 2013-03-02 12:55:33

+0

錯誤信息是什麼? 'DATE()'是有效的。請參閱此處[在計算中使用當前日期和時間](http://office.microsoft.com/zh-cn/access-help/use-current-date-and-time-in-calculations-HP001098479.aspx) – 2013-03-02 12:56:38

+0

This是錯誤消息。 生成的SELECT語句。 ')'附近的WHERE子句出錯。無法解析查詢文本。 – kv1809 2013-03-02 13:01:30

1

您是否期待日期返回今天的日期?我認爲這是GETDATE()http://msdn.microsoft.com/en-gb/library/ms188383.aspx

,如果你是SQL Server 2008上

選擇 SELECT * FROM [訂購] WHERE OrDate> = CONVERT(日期,DATEADD(DAY,-7,GETDATE( )))

+0

'GETDATE() ''是'SQL Server'。 – 2013-03-02 13:09:31

+0

啊,剛剛注意到了註釋 - MS Access – 2013-03-02 13:12:10

+0

我想顯示1周的日期。 – kv1809 2013-03-02 13:14:05