Python / pyodbc - WHERE 语句过滤日期?

Python / pyodbc - WHERE statement to filter dates?

我已经使用 pydoc 从 sql 数据库中获取数据。

我想使用 WHERE 语句来过滤日期。我有:

cursor.execute("SELECT isnull(SOP30200.SOPNUMBE,''), isnull(SOP30200.docdate,'') from SOP30200 where SOP30200.docdate > datetime.datetime(2015,1,1,0,0)")

我收到错误:

ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot find either column "datetime" or the user-defined function or aggregate "datetime.datetime", or the name is ambiguous. (4121) (SQLExecDirectW)') 

没有WHERE语句我成功获取了数据。我确实检查了拉出的 "docdate" 字段的类型,它是 datetime.datetime.

编辑:还应指出提取的日期采用 datetime.datetime(2013, 5, 8, 0, 0)

形式

您需要使用参数 inject/interpolate 日期。 SQL 服务器正在尝试按原样 运行 SQL 语句并期望数据库中存在 datetime.datetime(..) 函数。

cursor.execute("SELECT isnull(SOP30200.SOPNUMBE,''), isnull(SOP30200.docdate,'') from SOP30200 where SOP30200.docdate > ?", datetime.datetime(2015,1,1,0,0))

参见http://mkleehammer.github.io/pyodbc/ - 参数部分

"datetime.datetime"不是SQL函数,是Python标准库的class。

可能是:

cursor.execute("SELECT isnull(SOP30200.SOPNUMBE,''), isnull(SOP30200.docdate,'') from SOP30200 where SOP30200.docdate > ?", datetime.datetime(2015,1,1,0,0))