2011-06-28 52 views
1

我有以下查詢(有關訪問Access數據庫的.mdb Windows 7的蟒蛇pyodbc):如何使用pyodbc從ms access db中選擇最後5分鐘的數據?

SQL = 'SELECT acq_spill_3_1_sec.time_stamp, acq_spill_3_1_sec.float_value 
    FROM acq_spill_3_1_sec WHERE acq_spill_3_1_sec.time_stamp > DateADD(n,-5,Now())' 

DateADD似乎並沒有工作。我得到以下錯誤:

pyodbc.Error: ('07002', '[070021] [Microsoft][ODBC Microsoft Access Driver] Too few 
parameters. Expected 1. 

我試過單個,雙和n周圍沒有引號,但這並沒有什麼區別。

回答

-1

按照DATADD MSDN頁面(http://msdn.microsoft.com/en-us/library/ms186819.aspx)的例子,請嘗試使用

DATEADD(minute, -5, NOW()) 
+0

謝謝。但是這並不能解決問題。 –

+1

T-SQL答案對Access問題沒有幫助。 –

2

兩個問題:1)把雙引號圍繞n參數。 2)把方括號放在time_stamp的周圍。 (在某些情況下,Access將time_stamp字段中的下劃線解釋爲特殊字符。查詢解析器盡力解釋特殊字符,但有時會出錯。方括號幫助解析器消除字段名的歧義,以便解析。正確)

只是我的意見,我會用DateDiff代替,因爲它更有意義,當你讀它:

SQL = 'SELECT time_stamp, float_value FROM acq_spill_3_1_sec WHERE DateDiff("n",[time_stamp],Now()) <= 5' 

我覺得這是一個更容易建立自己的查詢中訪問和試戴首先要確保他們在寫代碼之前工作。祝你好運!

+0

感謝您的幫助。但這似乎並不奏效。獲取相同的錯誤。 –

+0

當您嘗試在Access中編寫和運行相同的查詢時,您會得到什麼?我在Access 2007中嘗試了這一點,並且工作。 – Brandon

+0

如果你在Access中得到一個工作查詢,那麼你可以通過傳遞一個'EXECUTE QueryName'作爲你的SQL字符串,直接從你的代碼中調用它。 – Brandon

相關問題