在标量值函数中如何检测出一个字符串能否转换成日期
写一个标量值函数可以检查传入的字符串能否转换成日期类型
参数1: @年=‘2012’
参数2: @日期='8-1 12:0'
把两年字符串拼接在一起 cast(@年+@日期 as datetime) 这样直接转换在参数2正确的情况下可以成功转换,因客户的数据中@日期 经常有错的如 '13-1 1:2' 或 '8-1 70:90' 这样, 此时再用上面的方面就出转换出错了。
什么办法可以解决这种出错的, 出错了可以直接返回空值就可以, 转换成功时就返回成功的字符串
[解决办法]
create function fn_isdate( @年 varchar(10), @日期 varchar(20))returns varchar(30)asbegin if(isdate(@年+'-'+@日期)=1) return convert(varchar(30),cast(@年+'-'+@日期 as datetime),120) else return null return ''endselect dbo.fn_isdate('2012','8-1 12:0')/*2012-08-01 12:00:00*/select dbo.fn_isdate('2011','13-1 1:2')select dbo.fn_isdate('2012','8-1 70:90')/*NULL*/