oracle使用to_date進行varchar2字段時間進行轉換時發現此錯誤:
> ORA-01841: (full) year must be between -4713 and +9999, and not be 0
導致原因:時間字段中存在非法內容,比如非正常時間字符,帶了毫秒,或者亂碼文字,純空格等原因
本次我遇到的是sDate字段有空格,原因為原SQL庫的''空字符字段,轉Oracle時轉成了空格' ',導致to_date失敗。
fine?解決方法:
1,刪除sDate字段內容為空格的值
2,Trim(sDate)
另外,還可以自己寫一個my_to_date函數,實現非法字符異常的規避
函數如下:
CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2,p_format IN VARCHAR2 )RETURN DATE
IS
BEGINRETURN to_date( p_str, p_format );
EXCEPTIONWHEN OTHERSTHENRETURN NULL;
END;
ora-01438 value larger than。這樣再調用my_to_date時不再會拋出異常
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态