日期:2014-05-16 浏览次数:20828 次
create or replace function CheckOutDate(DateString in varchar2) /* 入口参数: 1.需要为10位 如:2012-01-01 2.月份需要小于12 效果:若日超过当月最大日,则转换为月末 ps:若你现在看到的这段注释,请注意阅读,如果你的参数不满足需求,建议你修改本段程序,增加判断处理规则,但是不要影响将现在支持的功能 例如:增加对月份的判断、以及处理异常时,对字符串截取 改为根据‘-’进行截取 以上 written by 师蒙 2012-5-22 增加对0000-00-00的处理,转化为9999-01-01 add by shimeng 2012-5-22 */ return varchar2 is Result varchar2(10); BEGIN /*shimeng 将字符格式的日期转化为日期类型*/ IF DateString ='0000-00-00' THEN select to_char(to_Date('9999-01-01', 'yyyy-mm-dd'), 'yyyy-mm-dd') into Result from dual; return(Result); ELSE select to_char(to_Date(DateString, 'yyyy-mm-dd'), 'yyyy-mm-dd') into Result from dual; return(Result); END IF; EXCEPTION /*shimeng 将字符格式的日期转化为日期类型,若字符不正确如 '2012-02-30' 则转换为 2012-2-29*/ when others then select to_char(last_day(to_date(substr(DateString, 1, 7) || '01', 'yyyy-mm-dd')), 'yyyy-mm-dd') into Result from dual; return(Result); end CheckOutDate;