問題是: TO_DATE(trans_dt,'YYYYMMDD HH24:MI:SS') >= :startdate, trans_dt是一個字串,像這樣的'20120101050000',startdate是PB中的一個datetime型別。
在一個DB上run時是不會出錯誤的,運行正確,但是換一個DB就報錯; 錯誤為:
ORA-01861:literal does not match format string.
請問問題出在哪了?PB不熟,麻煩了
uj5u.com熱心網友回復:
救急,在線等!!!!uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
看不出問題來,估計是別的地方出錯了uj5u.com熱心網友回復:
和PB沒關系吧...看報錯是oracle的那個函式報出來的錯
uj5u.com熱心網友回復:
或者你都用字串來做比較uj5u.com熱心網友回復:
兩個資料庫一樣嗎uj5u.com熱心網友回復:
TO_DATE是oracle的函式,你換的第二個資料庫是否一樣。uj5u.com熱心網友回復:
這個和PB的關系應該不大,問題在ORACLE資料上,跟蹤一下trans_dt的值是否有問題,建議使用SQL Monitor來跟蹤uj5u.com熱心網友回復:
2個庫的資料型別結構不同吧uj5u.com熱心網友回復:
看樣子和PB沒關系的啊,查一下報錯的資料庫是不是有特殊的設定,不支持你那樣的時間格式字串啊?uj5u.com熱心網友回復:
startdate convert to string first,e.g.(string(startdate,'yyyymmdd'))
uj5u.com熱心網友回復:
看報錯是oracle的那個函式報出來的錯uj5u.com熱心網友回復:
樓主,應該將PB的datetime轉換成字串進行比較,如下:string ls_startdate
ls_startdate = string (startdate,'YYYYMMDD HH:MM:SS')
然后將oralce陳述句改成如下:
trans_dt >= TO_DATE(:ls_startdate ,'YYYYMMDD HH24:MI:SS')
另外一定要記住,對資料庫where陳述句的運算式左邊不要使用函式或其它運算,把函式或運算轉移到右邊,那樣才能使用上索引。
uj5u.com熱心網友回復:
反過來是下 用to_char()轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/51123.html
標籤:數據庫相關
上一篇:十萬火急,小弟跪求!
下一篇:怎么實作列的自動換行?
