1

我有以下查询(Windows 7 上的 python pyodbc 访问访问数据库 .mdb):

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 周围没有引号,但这没有区别。

4

2 回答 2

2

n两个问题:1)在参数两边加上双引号。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'

我发现在 Access 中自己构建查询并首先在其中尝试以确保它们在编写代码之前可以正常工作要容易得多。祝你好运!

于 2011-06-28T14:29:36.987 回答
-1

根据 DATADD MSDN 页面 (http://msdn.microsoft.com/en-us/library/ms186819.aspx) 上的示例,尝试使用

DATEADD(minute, -5, NOW())
于 2011-06-28T11:32:12.823 回答