oracle中是否具有“判定字符串是否符合日期格式”的函数,类似于sqlserver的ifdate。
例:2011-01-23符合日期格式2013-11-33不符合日期格式createorreplacefunctionifdate(datestringinvarchar2...
例:
2011-01-23 符合日期格式
2013-11-33 不符合日期格式
create or replace function ifdate(datestring in varchar2,result out integer) return integer is
v_result integer;
begin
select to_date(datestring,'yyyy-mm-dd') from dual;
v_result:=1;
return(v_result);
Exception
when others then
v_result:=0;
return(v_result);
end ifdate;
这样写有问题么? 展开
2011-01-23 符合日期格式
2013-11-33 不符合日期格式
create or replace function ifdate(datestring in varchar2,result out integer) return integer is
v_result integer;
begin
select to_date(datestring,'yyyy-mm-dd') from dual;
v_result:=1;
return(v_result);
Exception
when others then
v_result:=0;
return(v_result);
end ifdate;
这样写有问题么? 展开
3个回答
展开全部
oracle中有“判定字符串是否符合日期格式”的函数,解决方法如下:
1、首先除了sysdate函数外oracle中还包含其它日期函数,如add_months(日期,数字)在指定的日期上加入指定的月数,求出新的日期。
2、除此之外还有next_day(日期,星期一)函数,计算当前日期的下个星期一时间。
3、还有last_day(日期),用来求出指定日期所在月份的最后一天。
4、还有另外一个months_between(日期,指定日期),可以计算出两个日期相差的月数。
5、如果给出的指定日期是字符串,在计算的时候就需要先将字符串进行转换成日期然后再进行计算,使用to_date(日期,'格式'),就完成了。
展开全部
create or replace function isdate
(p in varchar2)
return varchar2
is
result date;
begin
result:= to_date(p,'yyyy-mm-dd');
return to_char(result,'yyyy-mm-dd');
exception
when others then return '0';
end;
正常的日期返回本身
否则返回0
测试1
select isdate('2014-01-01') from dual
测试2
select isdate('2014-01-33') from dual
-------------
那象你那样这样写不就行吗
你那个报错
create or replace function isdate
(p in varchar2)
return int
is
result date;
begin
result:= to_date(p,'yyyy-mm-dd');
return 1;
exception
when others then return 0;
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle 没有类似函数,要么自己写个函数,强转报错即不是日期格式。
追问
Oracle 自定义function能够添加异常处理过程么,这个函数怎么写,能否告知一下关键步骤。
追答
“badkano”把函数贴给你了,我就不多嘴了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询