当前位置: 代码迷 >> Informix >> 交付sql時提示日期格式不可接受,解決辦法
  详细解决方案

交付sql時提示日期格式不可接受,解決辦法

热度:5403   发布时间:2013-02-26 00:00:00.0
提交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中不是只要提交字符串上去就好了嗎?為什麼要將字符串轉義成日期型?

不轉型態時,第二天為什麼又能好呢?天啊,這些問題一直轉著我轉啊.誰能答呢?

------解决方案--------------------------------------------------------
顶一下
  相关解决方案