有两个表时间字段是nvarchar类型的,现在需对两个进行时间对比
表结构如下
    时间1   时间2
    09:03   10:50   
    08:00   17:00结果如下
    时间1   时间2   时间长
    09:03   10:50   01:47
    08:00   17:00   09:00不知道用什么函数能进行数据转换?

解决方案 »

  1.   

    declare @a table(a nvarchar(20),b nvarchar(20),c nvarchar(20))
    insert @a select '09:03', '10:50',null
    union all select '08:00', '17:00',null
    select a,b,c=right(100+datediff(hour,cast(a as datetime),cast(b as datetime)),2)+':'+
    right(100+datediff(minute,cast(a as datetime),cast(b as datetime)) %60,2)
    from @a
      

  2.   

    declare @a table( 时间1 nvarchar(20),时间2 nvarchar(20))
    insert @a select '09:03', '10:50'
    union all select '08:00', '17:00'
    union all select '08:00', '17:06'
    union all select '08:90', '17:06'
    union all select '08:00', '1706'select * from @a where  isdate(时间1)>0select  时间1, 时间2 , right(100+datediff(Hour,时间1,时间2),2)+':'+right(100+ datediff(minute,时间1,时间2)%60,2) as 时间长 from  @awhere isdate(时间1) >0 and isdate(时间2) >0时间1   时间2   时间长
    09:03 10:50 01:47
    08:00 17:00 09:00
    08:00 17:06 09:06
      

  3.   

    select 时间1,时间2,case when 时间2-时间 end as 时间长 from 表
      

  4.   

    declare @a varchar(100),@b varchar(100)
    select @a='9:3',@b='10:50' 
    select cast((datediff(minute,cast (@a as datetime),cast (@b as datetime)))/60 as varchar) + ':'+cast((datediff(minute,cast (@a as datetime),cast (@b as datetime))) % 60 as varchar)
    --------------------------------------------------------------- 
    1:47(所影响的行数为 1 行)
      

  5.   

    declare @a table( 时间1 nvarchar(20),时间2 nvarchar(20),时间长 nvarchar(20))
    insert @a select '09:03', '10:50',''
    union all select '08:00', '17:00',''
    union all select '08:00', '17:06',''
    union all select '08:05', '17:06',''select 时间1,时间2,abs(datediff(mi, (convert(varchar(10),getdate(),120) + ' '+ 时间1+ ':00'),
    (convert(varchar(10),getdate(),120) + ' '+ 时间2+ ':00'))) 时间长 from @a------------------------------------------------------------------------------------
    时间1     时间2   时间长
    09:03 10:50 107
    08:00 17:00 540
    08:00 17:06 546
    08:05 17:06 541