提交sql時提示日期格式不可接受,解決辦法
今天屁話挺多的啊. 這是我寫的日志就直接貼過來了,也是我碰到這個問題時的思路.
請各位大蝆看看如果你們碰到這种問題會以什麼辦法來解決呢?
思路和想法,其實解決的辦法是很簡單的.
導常就是提交sql語句時,如果查詢條件中包含日期型態就會出錯:
Invalid era,could not assign era date
但是到第二天這個異常又不會出現(也提交日期型態的條件)
sql 如下:
select * from sfd_file where sfd21 = '091201' (在informix中可以執行,以前也可以執行,就是今天不行)
sfd21在數據庫中為date型.
-------------------------------------------------
主機剛剛恢復好,接著網站又跟我罷工,郁悶到了极點.
居然又聽到EasyFlow不能用. 天啊,怎麼屋漏偏逢連夜雨呢?
心情先不管了,總照事還是要做的.
ERP的事先交接給師傅了,呵呵,幸好有人幫,不然穩挂.
網站需要一步一步的測試,真的是郁悶. 因為以前也出現過此異常,可是第二天他居然不醫自瘉,所以也就不想管它.
現在看樣子是不得了,火熸屁股了哦.
從INFORMIX的參數到CSDK再到ODBC的設定, 看過了一遍又一遍. 都沒有問題.
再試著重做測試服務器. 異常就像甩不掉的影子.
IBM官網上找了一天的資料,打客服居然說我們過保了,不提供技術支持了,我哭啊.
哎!
沒辦法還是一步一步的查問題吧,異常提示: Invalid era,could not assign era date查起.
顯然此信息告訴我數據庫不能接受此日期格式,
於是我想想只能是CSDK和INFORMIX出問題了吧.而INFORMIX的參數都沒有改動過,
要出錯也早就出了.不用每個月來一次吧.那這樣只能是CSDK的版本有問題咯.
於是將CSDK從2.81 升到 3.0版本 還是不行. 記得上次神馬的技術人員建義我們升到3.5於是上ibm官網上找最新版本的資料.可是全英文的資料差點把我看傻了,拿著詞典上網的感覺你們沒嘗試過吧.哈
最後想想還是放棄了這個想法,依經理的思路測試sql ,他判斷是提交的格試有問題.
結果我把所有的日期格試都測過了,都無法進行提交.
再經經理點拔,測試了0和null 居然可以順利執行. 這下看樣子不是格試了,應該是提交的型態不能接受啊.
嘿嘿!思路有了點.
終於有希望了,這下可以肯定我的sql在提交時有問題了. (雖然原來都一直是這樣執行的)
後來無意中想來了TODAY這個變量. 一試居然又是順利執行......我當時真是感動得哭的心情都有了.
要知道服務器剛挂,現在網站又挂,那我們真的以後無法立足了.
思路有了,看樣子是提交日期類型時,無法將字符串順利的轉換為DATE型態啊.
於是在所有提交日期的欄位前增加轉換函數. 大功告成了,
事後想想,也許自已真的是態憑主觀判斷了. 居然不將機器的ERROR INFORMATION當回事.
如果早順著日期格式錯誤去找的話就不會走這麼多彎路了
.
可是自已還是想不通SQL中不是只要提交字符串上去就好了嗎?為什麼要將字符串轉義成日期型?
不轉型態時,第二天為什麼又能好呢?天啊,這些問題一直轉著我轉啊.誰能答呢?
[解决办法]
顶一下