我有一个表,其中有四个字段:开始天数,开始时间,到达天数,到达时间 (这四个字段都是varchar类型) 例如:某一条记录:   1  16:00  2   12:20我的目的就是用 select(到达天数+到达时间)-(开始天数+开始时间) as 花费时间 from table 例如上条记录得到的就是 (2*24:00+12:20)-(24:00+16:00)=20:00这样的SQL语句该怎么写???QQ:421525432

解决方案 »

  1.   

    select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+' '+到达天数+到达时间)
      

  2.   


    select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+' '+rtrim(到达天数)+到达时间)
    from tb
      

  3.   

    从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
      

  4.   

    declare @tb table(startday varchar(2), starttime varchar(5), endday varchar(2), endtime varchar(5))
    insert @tb
    select '1',  '16:00',  '2',  '12:20'select convert(varchar(5),enddate-startdate,108)
    from (
    select cast('2008-11-'+startday+' '+starttime as datetime) as startdate,
              cast('2008-11-'+endday+' '+endtime as datetime) as enddate
    from @tb
    ) t
    /*
    20:20
    */
      

  5.   


    --上面没注意,放错地方了
    select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+rtrim(到达天数)+' '+到达时间)
    from tb
      

  6.   

    declare @t table(开始天数 varchar(10),开始时间 varchar(10),到达天数 varchar(10),到达时间 varchar(10))
    insert @t select '1',  '16:00','2','12:20'select datediff(hh,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+rtrim(到达天数)+' '+到达时间)
    from @t
     
    /*
    -----------
    20(1 行受影响)
    */
      

  7.   

    declare @t table(开始天数 varchar(10),开始时间 varchar(10),到达天数 varchar(10),到达时间 varchar(10))
    insert @t select '1',  '16:00','2','12:20'--如果开始天数,到达天数大于31
    select 到达天数 * 24 + datepart(hh,到达时间) - 开始天数 * 24 - datepart(hh,开始时间)
    from @t
    /*
    -----------
    20(1 行受影响)
    */