字符型日期转换日期型的非常数据定位与处理
Posted databook
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符型日期转换日期型的非常数据定位与处理相关的知识,希望对你有一定的参考价值。
由于数据的不规范性,造成日期类型转换异常。通过编写函数,找出异常值。
1 CREATE OR REPLACE EDITIONABLE FUNCTION FUN_STR_TO_DATE (I_STR VARCHAR2) 2 return DATE is 3 V_DATE DATE; 4 begin 5 V_DATE:= TO_DATE(I_STR,‘YYYY/MM/DD‘) ; --单一格式 6 REturn V_DATE; 7 EXCEPTION 8 WHEN OTHERS THEN 9 select TO_DATE(‘99991231‘,‘YYYYMMDD‘) into V_DATE from dual; 10 return V_DATE ; 11 end ;
或者:
1 CREATE OR REPLACE EDITIONABLE FUNCTION FN_STR_TO_DATE (I_STR VARCHAR2) 2 RETURN DATE IS 3 V_DATE DATE; 4 BEGIN 5 if INSTR(I_STR,‘/‘) > 0 then 6 SELECT TO_DATE(I_STR,‘YYYY/MM/DD‘) INTO V_DATE FROM DUAL; 7 elsif INSTR(I_STR,‘-‘) > 0 then 8 SELECT TO_DATE(I_STR,‘YYYY-MM-DD‘) INTO V_DATE FROM DUAL; 9 else 10 SELECT TO_DATE(I_STR,‘YYYYMMDD‘) INTO V_DATE FROM DUAL; 11 end if;--多种格式的日期 12 RETURN V_DATE; 13 EXCEPTION 14 WHEN OTHERS THEN 15 SELECT TO_DATE(‘99991231‘,‘YYYYMMDD‘) INTO V_DATE FROM DUAL; 16 RETURN V_DATE ; 17 END ;
异常数据都转换成 99991231,通过检索对比找到异常的源数据。
以上是关于字符型日期转换日期型的非常数据定位与处理的主要内容,如果未能解决你的问题,请参考以下文章