我正在尝试使用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(我猜错误显而易见)
“文字与格式字符串不匹配”是否表示我不能使用<和>在这个数据库上的日期?有谁可以帮助我?
非常感谢, 亚历
答案 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通信;虽然这只是个人偏好。