0

我正在尝试使用 pyodbc 从 Oracle 数据库中返回符合某些条件的日期。例如,我想获取 2010 年 1 月 1 日到 2011 年 1 月 1 日之间的所有日期。为此,我这样做:

x = cursor.execute("""select Column from Table where OutputDate > '2010/01/01' and OutputDate < '2011/01/01'"""

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

pyodbc.DataError: ('22007', '[22007] [Microsoft][ODBC driver for Oracle][Oracle]ORA-01861: literal does not match format string (1861) (SQLExecDirectW)')

我在 Windows 7 上,我使用的驱动程序是 Microsoft ODBC for Oracle(我猜这从错误中很明显)

“文字与格式字符串不匹配”是否意味着我不能在此数据库上使用 < 和 > 日期?有人可以帮我吗?

非常感谢,亚历克斯

4

1 回答 1

1

Literal does not match format string表示您正在尝试比较日期和字符串。将您的查询更改为以下内容,它应该可以工作。

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 数据类型列表;该网站对一切都有好处。

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

于 2012-01-09T20:16:36.187 回答