fine,ORA-01841: (full) year must be between -4713 and +9999, and not be 0 及自定義my

 2023-10-18 阅读 31 评论 0

摘要:oracle使用to_date進行varchar2字段時間進行轉換時發現此錯誤: > ORA-01841: (full) year must be between -4713 and +9999, and not be 0 導致原因:時間字段中存在非法內容,比如非正常時間字符,帶了毫秒,或者亂碼文字,純空

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時不再會拋出異常

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/155125.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息