现在数据库中有一表,表中有一列"ttime",类型为时间,现在写了一个存储过程,接收一个时间参数功能为,将ttime中的时间与传入的时间做比较,然后将差值返回,能保存传入的时间一定会比存放的时候大要求:差值精确到分,反回的也是相差的分钟值,(在存储过程中实现,数据库为SQL2000)例如:ttime:  2008-03-24 15:48
传入:2008-03-25 16:48执行存储过程后应该能返回:25(小时)

解决方案 »

  1.   

    create proc proc_name
    @d datetime
    as
       declare @ttime datetime
       set @ttime = '2008-03-24 15:48 '
       select datediff(mi,@ttime,@d)
    go
      

  2.   

    create proc proc_name 
    @dd datetime 
    as 
       declare @ttime datetime 
       declare @y int,@m int,@d int,@h int,@mi int,@t int
       set @ttime = '2008-03-24 15:41 ' 
       select @t =datediff(mi,@ttime,@dd)    select @d = @t /3600,@h = (@t - (@d * 3600)) /60,@mi = @t - @h *60
       select case when @d > 0 then ltrim(@d)+'天' else '' end +
              case when @h > 0 then ltrim(@h)+'时' else '' end +
              case when @mi > 0 then ltrim(@mi)+'分' else '' end    
    goexec proc_name '2008-03-25 16:48'drop proc proc_name
    /*
    ------------------------------------------ 
    25时7分(所影响的行数为 1 行)*/
      

  3.   

    create proc proc_name 
    @dd datetime 
    as 
       declare @ttime datetime 
       declare @y int,@m int,@d int,@h int,@mi int,@t int
       set @ttime = '2008-03-24 15:48 ' 
       select @t =datediff(mi,@ttime,@dd)    select @d = @t /3600,@h = (@t - (@d * 3600)) /60,@mi = @t - @h *60
       select case when @d > 0 then ltrim(@d)+'天' else '' end +
              case when @h > 0 then ltrim(@h)+'时' else '' end +
              case when @mi > 0 then ltrim(@mi)+'分' else '' end    
    goexec proc_name '2008-03-25 16:48'drop proc proc_name
    /*
    ------------------------------------------ 
    25时(所影响的行数为 1 行)*/