先转换成正确的日期格式,然后再用datediff()进行计算

解决方案 »

  1.   

    select left('时间1',6,2)-left('时间2',6,2)
      

  2.   

    select datediff(day
                    ,convert(datetime,left(时间1,8))
                    ,convert(datetime,left(时间2,8))
                    )
      

  3.   

    打错,改为
    select substring('时间1',6,2)-substring('时间2',6,2)
      

  4.   

    再改,这次对了
    select cast(substring('20040809000000',6,2) as int)-substring('20040810000000',6,2)结果:-1
      

  5.   

    解决了, lsxaa(小李铅笔刀)的是正解to:yjdn(无尽天空)
    时间怎么能直接转int减呢
    你算算20040809000000和20040909000000
    结果是71,显然不对
      

  6.   

    结果是71?你搞错吧?
    我用9号-10号当然是-1了我只是举了一个列子,
    select cast(substring('时间1',6,2) as int)-substring('时间2',6,2)把你的时间代进去
      

  7.   

    呵呵,抱歉,错了
    上面只考虑到日,改成这样:select cast(left('20040809000000',8) as int)-left('20040810000000',8)
      

  8.   

    select 相差天数=datediff(day,日期字段1,日期字段2)
      

  9.   

    select 相差天数=datediff(day,cast(left('20040809000000',8) as datetime)
                  ,cast(left('20040810000000',8) as datetime))
      

  10.   

    转换成日期类型,然后用datediff()是最有效的方法