create or replace function verifydate(verdate in varchar2) return date
as
/* TITLE : <P>varchar转date方法</P>
* DESCRIPTION: <P>适合字符串长度为8的varchar类型进行校验</P>
* COPYRIGHT : <P>COPYRIGHT (C) 2017</P>
* COMPANY :
* AUTHOR : zZBoring
* VERSION : 1.0
* DATE : 2017-05-16
*/
begin
--最大时间为99991231 不符合时间格式的返回null
if 4 <= length(verdate) and '9999' = substr(verdate,0,4)
then return to_date('99991231','yyyymmdd');
else if 8 = length(verdate)
then return to_date(verdate,'yyyymmdd');
else return null;
end if;
end if;
exception
WHEN OTHERS THEN
return null;
as
/* TITLE : <P>varchar转date方法</P>
* DESCRIPTION: <P>适合字符串长度为8的varchar类型进行校验</P>
* COPYRIGHT : <P>COPYRIGHT (C) 2017</P>
* COMPANY :
* AUTHOR : zZBoring
* VERSION : 1.0
* DATE : 2017-05-16
*/
begin
--最大时间为99991231 不符合时间格式的返回null
if 4 <= length(verdate) and '9999' = substr(verdate,0,4)
then return to_date('99991231','yyyymmdd');
else if 8 = length(verdate)
then return to_date(verdate,'yyyymmdd');
else return null;
end if;
end if;
exception
WHEN OTHERS THEN
return null;
end verifydate;
别名与关键字相同时可以加引号
SELECT verifydate('99990231') "date" FROM dual;
本文介绍了一个用于将固定格式的VARCHAR类型字符串转换为DATE类型的Oracle函数。该函数适用于长度为8的日期字符串,如'YYYYMMDD'。若输入格式正确,则成功转换;否则返回NULL。此外,还提供了一种特殊情况处理,即对于年份为'9999'的数据,统一设置为'9999-12-31'。
1104

被折叠的 条评论
为什么被折叠?



