如何使用pyodbc从MS Access数据库中选择最后5分钟的数据?
我有一个查询(在Windows 7上使用Python的pyodbc访问一个Access数据库.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的周围加单引号、双引号和不加引号,但这些都没有什么区别。
2 个回答
-1
根据DATADD的MSDN页面上的例子(http://msdn.microsoft.com/en-us/library/ms186819.aspx),你可以试着使用
DATEADD(minute, -5, NOW())
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'
我发现自己在 Access 里面先自己构建查询并试运行一下,确保它们能正常工作,这样比直接写代码要简单得多。祝你好运!