在标量值函数中如何检测出一个字符串能否转换成日期

zywhao 2012-08-25 02:36:45
写一个标量值函数可以检查传入的字符串能否转换成日期类型

参数1: @年=‘2012’
参数2: @日期='8-1 12:0'

把两年字符串拼接在一起 cast(@年+@日期 as datetime) 这样直接转换在参数2正确的情况下可以成功转换,因客户的数据中@日期 经常有错的如 '13-1 1:2' 或 '8-1 70:90' 这样, 此时再用上面的方面就出转换出错了。

什么办法可以解决这种出错的, 出错了可以直接返回空值就可以, 转换成功时就返回成功的字符串
...全文
33 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2012-08-25
  • 打赏
  • 举报
回复

create function fn_isdate
(
@年 varchar(10),
@日期 varchar(20)
)
returns varchar(30)
as
begin
if(isdate(@年+'-'+@日期)=1)
return convert(varchar(30),cast(@年+'-'+@日期 as datetime),120)
else
return null

return ''
end


select 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
*/

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧