我的数据库A,想返回两个时间的时间差,两个时间的格式如下:
a              b
11:00:00    12:20:11
然后我想返回的格式是
c
1:20:11我用datediff,但出不了我的结果,格式都不是那样的,请问该怎么写?

解决方案 »

  1.   

    declare @date1 datetime,@date2 datetime
    set @date1='2008-04-06 16:27:25'
    set @date2='2008-04-08 18:27:24'select 时间差 = 
    cast(datediff(second , @date1, @date2) / (24*60*60) as varchar) + '天' + 
    cast((datediff(second , @date1, @date2) % (24*60*60)) / (60*60) as varchar) + '时' + 
    cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) / 60 as varchar) + '分' +
    cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) % 60 as varchar) + '秒'/*
    时间差                 
    -----------------------
    2天1时59分59秒(所影响的行数为 1 行)
    */
      

  2.   

    declare @date1 datetime,@date2 datetime
    set @date1='2008-04-06 16:27:25'
    set @date2='2008-04-08 18:27:24'select 时间差 = 
    cast((datediff(second , @date1, @date2) % (24*60*60)) / (60*60) as varchar) + ':' + 
    cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) / 60 as varchar) + ':' +
    cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) % 60 as varchar) 
      

  3.   

    declare @date1 datetime,@date2 datetime
    set @date1= convert(varchar(10),getdate(),120) + ' 11:00:00'
    set @date2= convert(varchar(10),getdate(),120) + ' 12:20:11'select 时间差 = 
    cast(datediff(second , @date1, @date2) / (60*60) as varchar) + ':' + 
    right('00'+cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) / 60 as varchar),2) + ':' +
    right('00'+cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) % 60 as varchar),2) /*
    时间差                                      
    ---------------------------------------- 
    1:20:11(所影响的行数为 1 行)
    */
      

  4.   

    declare @date1 datetime,@date2 datetime
    set @date1='11:00:00'
    set @date2='12:20:11'select 时间差 =  
    right('00'+cast((datediff(second , @date1, @date2) % (24*60*60)) / (60*60) as varchar),2) + ':' +  
    right('00'+cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) / 60 as varchar),2) + ':' +
    right('00'+cast(((datediff(second , @date1, @date2) % (24*60*60)) % (60*60)) % 60 as varchar),2)  
      

  5.   


    declare @table table (a datetime,b datetime)
    insert into @table
    select '11:00:00','12:20:11'select convert(varchar(10),b-a,8) from @table
    /*
    01:20:11
    */