1. 程式人生 > >字元型日期轉換日期型的非常資料定位與處理

字元型日期轉換日期型的非常資料定位與處理

由於資料的不規範性,造成日期型別轉換異常。通過編寫函式,找出異常值。

 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,通過檢索對比找到異常的源資料。