我需要在我的程序中生成報告。 然後,我用這個SQL代碼來篩選將顯示在報表查看器中的數據:TableAdapter配置嚮導無法識別sql語句「DATE()」
SELECT *
FROM Order
WHERE OrDate=DATE() OR OrDate>=DATE() - 7;
當我點擊下一個,這個錯誤發生
生成的SELECT語句。 ')'附近的WHERE子句出錯。 無法解析查詢文本。
請幫我解決這個錯誤。
我需要在我的程序中生成報告。 然後,我用這個SQL代碼來篩選將顯示在報表查看器中的數據:TableAdapter配置嚮導無法識別sql語句「DATE()」
SELECT *
FROM Order
WHERE OrDate=DATE() OR OrDate>=DATE() - 7;
當我點擊下一個,這個錯誤發生
生成的SELECT語句。 ')'附近的WHERE子句出錯。 無法解析查詢文本。
請幫我解決這個錯誤。
問題不在於DATE()
,而是因爲表名ORDER
。
在大多數RDBMS中,ORDER
是保留關鍵字。使用保留關鍵字時,請使用供應商特定的分隔符將其轉義。在SQL Server
中,可以使用括號。
SELECT *
FROM [Order]
WHERE OrDate = DATE() OR
OrDate >= DATE() - 7;
從訪問文檔,
如果保留的字已被使用,您可以通過 避免出現錯誤消息,圍繞着括號中的字的每次出現([])。但是, 最好的解決方案是將名稱更改爲非保留字。
我試過了,但仍然出現錯誤。 – kv1809 2013-03-02 12:55:33
錯誤信息是什麼? 'DATE()'是有效的。請參閱此處[在計算中使用當前日期和時間](http://office.microsoft.com/zh-cn/access-help/use-current-date-and-time-in-calculations-HP001098479.aspx) – 2013-03-02 12:56:38
This是錯誤消息。 生成的SELECT語句。 ')'附近的WHERE子句出錯。無法解析查詢文本。 – kv1809 2013-03-02 13:01:30
您是否期待日期返回今天的日期?我認爲這是GETDATE()http://msdn.microsoft.com/en-gb/library/ms188383.aspx
,如果你是SQL Server 2008上
選擇 SELECT * FROM [訂購] WHERE OrDate> = CONVERT(日期,DATEADD(DAY,-7,GETDATE( )))
'GETDATE() ''是'SQL Server'。 – 2013-03-02 13:09:31
啊,剛剛注意到了註釋 - MS Access – 2013-03-02 13:12:10
我想顯示1周的日期。 – kv1809 2013-03-02 13:14:05
你正在使用什麼[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
Microsoft Access。 – kv1809 2013-03-02 12:52:16
首先,當您有OrDate> = DATE() - 7時,您不需要OrDate = DATE(),因爲該測試僅適用於今天的測試,該測試包括今天開始的任何測試。其次,即使它不能解決你的問題,改變保留字「order」,因爲這只是一個好習慣。第三,試着把(DATE() - 7)放在括號裏,就像Adam建議的那樣。 – 2013-03-02 16:23:13