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))
我已经使用 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))