日期:2014-05-17  浏览次数:20375 次

有关varchar函数向date函数转换的问题
现在我需要把varchar函数转换为date函数,这个用cast或convert都可以实现,
但是如果输入像‘12345678’这样明显不能转换date函数时,则不转换,并提示预设的信息1;
如果输入像‘18760216’这样可以转换date函数时,则转换,并提示预设的信息2。
这个功能应该要如何实现,希望各位高手指教啊!最好把实现该功能的sql代码附上


------解决方案--------------------
select isdate('18760216'),isdate('12345678')
/*
----------- ----------- 
1 0

(所影响的行数为 1 行)

1表示可以转换成时间。0表示不可以。
------解决方案--------------------
SQL code

--> 测试数据: @T
declare @T table (col varchar(10))
insert into @T
select 12345678 union all
select 18760216

--预设信息1
declare @s1 varchar(20) set @s1='转成失败'

--预设信息2
declare @s2 varchar(20) set @s2='转成成功'

--查询
select 
case when isdate(col)=1 
     then convert(varchar(10),cast(col as datetime),120)
     else col end as col,
case when isdate(col)=1 
     then @s2 else @s1 end as MessageInfo
from @T
/*
col        MessageInfo
---------- --------------------
12345678   转成失败
1876-02-16 转成成功
*/

------解决方案--------------------
探讨

引用:

SQL code

--> 测试数据: @T
declare @T table (col varchar(10))
insert into @T
select 12345678 union all
select 18760216

--预设信息1
declare @s1 varchar(20) set @s1='转成失败'

--预设信息2
……