使用cursor.execute select命令在pyodbc中返回日期

时间:2012-01-09 19:51:50

标签: python oracle datetime pyodbc

我正在尝试使用pyodbc返回符合Oracle数据库中某些条件的日期。例如,我希望获得2010年1月1日到2011年1月1日之间的所有日期。 要做到这一点,我这样做:

x = cursor.execute(“”“选择     表格中的列,其中OutputDate> '2010/01/01'和OutputDate< '2011/01/01'“”“

当我使用Access数据库时类似的东西,但现在它给了我这个错误:

pyodbc.DataError:('22007','[22007] [Microsoft] [Oracle的ODBC驱动程序] [Oracle] ORA-01861:文字与格式字符串不匹配(1861)(SQLExecDirectW)')

我在Windows 7上,我使用的驱动程序是Microsoft ODBC for Oracle(我猜错误显而易见)

“文字与格式字符串不匹配”是否表示我不能使用<和>在这个数据库上的日期?有谁可以帮助我?

非常感谢, 亚历

1 个答案:

答案 0 :(得分:1)

Literal与格式字符串不匹配表示您正在尝试比较日期和字符串。将您的查询更改为以下内容,它应该有效。

select column
  from table 
 where outputdate between to_date('2010/01/01','yyyy/mm/dd') 
       and to_date('2011/01/01','yyyy/mm/dd')

除非outputdate当然不是日期,否则最好将其转换为日期以及您的比较工作。

请注意between运算符,您可以在这种情况下使用它。

有一个Oracle数据类型列表here;这个网站对一切都很好。

我应该补充一点,我更喜欢cx_Oracle从python与Oracle通信;虽然这只是个人偏好。