在oracle中经常会出现一段字符串需要格式化为时间类型,当字符串格式无法满足转换格式时,数据库会抛出ORA-01861:文字与格式字符串不匹配
的提示,当需要进行异常处理时就不太方便
可以使用创建方法返回是否满足的形式进行捕获
create or replace function Is_date(str_ varchar2) return number is
v_dt date;
begin
v_dt := to_date(str_, 'yyyy-mm-dd hh24:mi:ss');
return 1;
exception
when others then
begin
v_dt := to_date(str_, 'yyyy-mm-dd');
return 1;
exception
when others then
return 0;
end;
end Is_date;
注意:其中的格式字符串yyyy-mm-dd hh24:mi:ss
与yyyy-mm-dd
可根据实际业务进行调整。
使用时只需要判断返回的数字即可,示例如下:
select Is_date('2024-01-01 01:01:01') from dual
扩展:可根据实际业务进行调整方法入参,如转换格式