我先
declare @aa varchar(20),@bb varchar(20)
set @aa = '13:30:00'
set @bb = '11:00:00'select datediff(mi,@bb,@aa)/60结果
            
----------- 
2(1 row(s) affected)并不是2.5

解决方案 »

  1.   

    我先
    declare @aa varchar(20),@bb varchar(20)
    set @aa = '13:30:00'
    set @bb = '11:00:00'select datediff(mi,@bb,@aa)/60.O
    这样就可以了 因为你所有的运算的数据类型都是INT,所以得出的结构也是INT
    把60改为60.0,就可以得到小数。
      

  2.   

    declare @aa varchar(20),@bb varchar(20)
    set @aa = '13:30:00'
    set @bb = '11:00:00'
    select datediff(mi,@bb,@aa)/60.O
      

  3.   

    declare @aa varchar(20),@bb varchar(20)
    set @aa = '13:30:00'
    set @bb = '11:00:00'
    select datediff(ss,@bb,@aa)/3600.0
      

  4.   

    谢谢,以上两位
    但是,结果
                        
    ------------------- 
    2.500000(1 row(s) affected)我 round(select datediff(mi,@bb,@aa)/60.O,n)是没有效果的,可能我用错了
      

  5.   

    declare @aa varchar(20),@bb varchar(20)
    set @aa = '13:30:00'
    set @bb = '11:00:00'
    Select convert(decimal(8,4),datediff(n,@bb,@aa))/60
      

  6.   

    谢谢,
    最新版本
    declare @aa varchar(20),@bb varchar(20)
    set @aa = '13:30:00'
    set @bb = '11:00:00'
    select STR(datediff(mi, @bb,@aa) / 60.0, 3, 2)
    谢谢各位,每人都有份
    结贴了!
      

  7.   

    declare @aa varchar(20),@bb varchar(20)
    set @aa = '13:30:00'
    set @bb = '11:00:00'
    select convert(decimal(8,1),datediff(n,@bb,@aa)/60.0)
      

  8.   

    declare @aa varchar(20),@bb varchar(20)
    DECKARE @D NUMERIC(6,1)
    set @aa = '13:30:00'
    set @bb = '11:00:00'select @D=datediff(mi,@bb,@aa)/60.O
    SELECT @D这样最简单
      

  9.   

    declare @aa varchar(20),@bb varchar(20)
    set @aa = '13:30:00'
    set @bb = '11:00:00'
    select convert(decimal(8,1),datediff(n,@bb,@aa)/60.0) 這個也行