两个vchar(6)字段怎么按时间来计算.
比如  200409   200510
他们之间相减应该是13.

解决方案 »

  1.   

    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))
      

  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
      

  3.   

    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))
      

  4.   

    declare @s1 char(06),@s2 char(06)
    set @s1='200509'
    set @s2='200610'
    select datediff(mm,@s1+'01',@s2+'01')/*result:*/
    ----------- 
    13
      

  5.   

    上面的在可以顺利的转化为日期型的时候没问题,但是如果输入的数据不是很规范就有问题了.
    ====================================================================================
    SQLServer对于输入的控制与判断是比较差的。
    这些你最好是在程序里做好判断!