Cx_oracle:在python中使用变量To_date

时间:2016-03-04 08:52:08

标签: oracle python-3.x cursor cx-oracle to-date

我正在尝试这样做

startdate = "20160123"
enddate = "20160204"
cmd = "select identification_number from bug where submitted_date >= TO_DATE(:1,'dd-MON-yy') and submitted_date <= TO_DATE(:2,'dd-MON-yy')"
cursor.execute(cmd,(startdate,enddate))

我收到错误

cursor.execute(cmd,(sdate,edate))
cx_Oracle.DatabaseError: ORA-01861: literal does not match format string

我看到了有关此错误的先前线程,但没有解决我的问题

1 个答案:

答案 0 :(得分:2)

我不确定startdateenddate如何转换为:1:2,但如果确实如此,则问题是日期格式问题。 您正在传递YYYYMMDD并将其转换为DD-MON-YYYY。尝试改变它。 你也缺少from条款。

我改为使用between子句。

select identification_number 
from <your_table>
where 
submitted_date between 
TO_DATE(:1,'YYYYMMDD') and TO_DATE(:2,'YYYYMMDD')

如果可行,请在代码中使用相同的日期格式

startdate = "20160123"
enddate = "20160204"
cmd = "select identification_number from <your_table> where submitted_date between TO_DATE(:1,'YYYYMMDD') and TO_DATE(:2,'YYYYMMDD')"