Cx_oracle:在 python 中使用变量的 To_date

Posted

技术标签:

【中文标题】Cx_oracle:在 python 中使用变量的 To_date【英文标题】:Cx_oracle: To_date with variables in python 【发布时间】:2016-03-04 08:52:08 【问题描述】:

我正在尝试这样做

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:2 是什么意思? to_date 函数需要 string 作为第一个参数。 @Utsav - 它们只是位置绑定变量占位符。 (有解释here)。 好的。谢谢@AlexPoole 【参考方案1】:

我不确定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')"

【讨论】:

非常感谢。我将所有日期格式更改为一种特定形式,并且它有效

以上是关于Cx_oracle:在 python 中使用变量的 To_date的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 设置 cx_Oracle 环境变量

使用 cx_Oracle 中 csv 文件中的变量更新数据库

为 python 安装 cx_oracle

Python cx_oracle 将变量与项目列表绑定

在windows下安装cx_Oracle问题

python 3.6 cx_Oracle.DatabaseError: DPI-1050