2016-03-04 179 views
0

變量我試圖做到這一點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 

我看到關於這個錯誤之前的線程,但沒有解決我的問題的錯誤

+0

什麼':1'和':2'這裏的意思? 'to_date'函數需要一個'string'作爲第一個參數。 – Utsav

+1

@Utsav - 它們只是位置綁定變量佔位符。 (這裏有一個解釋(http://stackoverflow.com/a/33882805/266304))。 –

+0

好的。謝謝@AlexPoole – Utsav

回答

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')" 
+0

非常感謝。我將所有的日期格式都改爲一種特定的格式,並且工作 – user2471313