declare @strA vchar(6) declare @strB vchar(6) set @strA ='200510' set @strB ='200409'select 12*(Convert(int,left(@strA,4))-Convert(int,left(@strB,4)))+Convert(int,right(@strA,2))-Convert(int,right(@strB,2))
declare @time1 varchar(20) declare @time2 varchar(30) set @time1='2004-01-01' set @time2='2005-01-01' print datediff(dd,cast(@time1 as datetime),cast(@time2 as datetime)) GO
declare @a char(6),@b char(6) set @a='200409' set @b='200510' select datediff(month,cast(@a+'01' as datetime),cast(@b+'01' as datetime))
declare @s1 char(06),@s2 char(06) set @s1='200509' set @s2='200610' select datediff(mm,@s1+'01',@s2+'01')/*result:*/ ----------- 13
declare @strB vchar(6)
set @strA ='200510'
set @strB ='200409'select 12*(Convert(int,left(@strA,4))-Convert(int,left(@strB,4)))+Convert(int,right(@strA,2))-Convert(int,right(@strB,2))
declare @time2 varchar(30)
set @time1='2004-01-01'
set @time2='2005-01-01'
print datediff(dd,cast(@time1 as datetime),cast(@time2 as datetime))
GO
set @a='200409'
set @b='200510'
select datediff(month,cast(@a+'01' as datetime),cast(@b+'01' as datetime))
set @s1='200509'
set @s2='200610'
select datediff(mm,@s1+'01',@s2+'01')/*result:*/
-----------
13
====================================================================================
SQLServer对于输入的控制与判断是比较差的。
这些你最好是在程序里做好判断!