一個處理不規範日期的函數,廖記一下吧,以免再忘。
--注意全角半角
CREATE OR REPLACE function f_str2form( date_string in varchar2 ) return VARCHAR2
is
v_dateform VARCHAR2;--聲明方式
v_tempStr VARCHAR2;
begin
exit when (nvl(date_string,'') = '');
IF REGEXP_LIKE(t.USE_DATE, '\d{4}-\d{2}-\d{2}|\d{4}\/\d{2}\/\d{2}') THEN --使用if需要使用then
v_dateform := to_date(t.USE_DATE, 'yyyy/mm/dd');--函數中的等于(或者是指派)用的是:=
RETURN to_char(v_dateform,'yyyy/mm/dd');
ELSE IF REGEXP_LIKE(t.USE_DATE, '\d{1}\/\d\/\d{2}|\d{2}\/\d\/\d{2}') THEN
v_tempStr := substr(l.USE_DATE,instr( l.USE_DATE, '/',2),-2);--負數倒着截取
v_dateform := '20'||v_tempStr||substr(l.USE_DATE,(instr( l.USE_DATE, '/',2)-1));
RETURN to_char(v_dateform,'yyyy/mm/dd');
ELSE IF REGEXP_LIKE(t.USE_DATE, '\d{1,2}\[月]\d{1,2}\[日]') THEN
v_tempStr := substr(l.USE_DATE,instr( l.USE_DATE, '日'));
v_tempStr := REPLACE(t.USE_DATE,'月','/');
v_tempStr := REPLACE(t.USE_DATE,'日','/');
v_dateform := to_char(sysdate, 'yyyy')||v_tempStr;
RETURN v_dateform;
ELSE
RETURN '';
END IF; --需要使用end if 結束if 并且使用分号結束
END;
轉載于:https://www.cnblogs.com/yeyuchangfeng/p/5536123.html