none
Suma de horas con total de 2 columnas datetime RRS feed

  • Pregunta

  • Muy buenas tardes amigos de MSDN, me gustaría saber si pueden ayudarme a saber como puedo construir un query que me sume 2 campos datetime con total de horas,minutos, y segundos respetando los rangos de 60 min ,60 segundo , yo investigue en internet y adecue el query y quedo de la siguiente manera

    Select SUM(datepart(hh, Total)) as 'Horas', SUM(datepart(mi, Total) )as 'Minutos',
    SUM(datepart(SS, Total) )as 'Segundos' from customdateworkplace
    where workplaceStart >= '20111214'
    and workplaceEnd < '20111217

    Pero me muestra el resultado asi:

    Horas|Minutos|Segundos|

    232   |5883    | 9732

    pero la idea es que me sume el total de horas con minutosy segundos que no pasen de 60 min y 60 segundos, algo asi:

    Horas|Minutos|Segundos|

    330 | 05| 07

    Sera esto posible con algún query? , muchas gracias y un saludo

    jueves, 11 de abril de 2013 19:08

Respuestas

  • Hola, no te estoy comprendiendo bien que es lo que quieres, quieres sumar horas minutos y segundos por separados ?? y que el resultado sea 3 enteros ?

    Porque creo que lo que intentas es realizar la suma de 2 campos TIME y que el resultado sea un TIME, de la siguiente manera es un ejemplo, puede no ser la mejor solución, observa:

    declare @t table( hora1 time, hora2 time)
    
    insert into @t
    select '05:12:15','19:43:21'
    union select '10:29:39','15:54:10'
    
    select * 
    , datediff( s, '00:00:00', hora1 ) as segundos1
    , datediff( s, '00:00:00', hora2 ) as segundos2
    , datediff( s, '00:00:00', hora1 )+datediff( s, '00:00:00', hora2 ) as sumaSegundos
    , dateadd( s, datediff( s, '00:00:00', hora1 )+datediff( s, '00:00:00', hora2 ), '00:00:00'  ) as segundosConvertidosHoras
    from @t

    Y el resultado es:

    hora1            hora2            segundos1   segundos2   sumaSegundos segundosConvertidosHoras
    ---------------- ---------------- ----------- ----------- ------------ ------------------------
    05:12:15.0000000 19:43:21.0000000 18735       71001       89736        1900-01-02 00:55:36.000
    10:29:39.0000000 15:54:10.0000000 37779       57250       95029        1900-01-02 02:23:49.000

    Lo que hago es obtener el equivalente de cada campo, pero en segundos y después hago la suma y nuevamente convierto al formato HH:mm:ss

    NOTA: Solo funciona a partir de SQL SERVER 2008


    Sergio Sánchez Arias
    AYÚDANOS A AYUDARTE

    • Editado Sergio S Arias jueves, 11 de abril de 2013 19:27
    • Marcado como respuesta akbal6 viernes, 12 de abril de 2013 21:33
    jueves, 11 de abril de 2013 19:25