none
Sumar horas RRS feed

  • Pregunta

  • Tengo una Tabla llamada Ingreso en SQL 2012

    Con una columna llamada Familia(Varchar) y otra llamada Tiempo(Time(0))

    Quiero sumar las horas totales por familia, pero con el formato hh:mm:ss

    Es decir si tengo 40 horas y 2 minutos, me muestre 40:02:00

    Como puedo logar eso 

    jueves, 7 de diciembre de 2017 12:54

Respuestas

  • Hasta donde entiendo, no existe un formato estándar o permitido para mostrar, en el componente 'HH', la sumatoria del componente horas y del componente días, por lo que tendrás que hacer "algo mas" para obtener el resultado que esperas, como por ejemplo multiplicar los días por 24 horas y el resultado sumarlo al componente de horas.

    SELECT
        t.Familia,
        CONCAT((DAY(t.Tiempo) - 1) * 24 + DATEPART(HOUR, t.Tiempo), FORMAT(t.Tiempo, ':mm:ss'))
    FROM
        (
    	   SELECT i.Familia, DATEADD(SECOND, SUM(DATEDIFF(SECOND, 0, i.Tiempo)), 0) AS [Tiempo] 
    	   FROM Ingreso i GROUP BY i.Familia
        ) t

    ** Recordarte que existe un foro para las preguntas que tengan que ver con t-sql.

    • Propuesto como respuesta Pablo Rubio jueves, 7 de diciembre de 2017 16:55
    • Marcado como respuesta El_vena viernes, 8 de diciembre de 2017 19:12
    jueves, 7 de diciembre de 2017 16:17

Todas las respuestas

  • hola utiliza el metodo addHour, addMinutes

    add minutos

    DateTime Tiempo= Eltiempo.AddMinutes(02);
    para horas
    DateTime x30MinsLater = Eltiempo.AddHours(40);
    

    jueves, 7 de diciembre de 2017 14:15
  • Olvide mencionar que quiero ejecutar esa consulta en sql 
    jueves, 7 de diciembre de 2017 14:18
  • Hasta donde entiendo, no existe un formato estándar o permitido para mostrar, en el componente 'HH', la sumatoria del componente horas y del componente días, por lo que tendrás que hacer "algo mas" para obtener el resultado que esperas, como por ejemplo multiplicar los días por 24 horas y el resultado sumarlo al componente de horas.

    SELECT
        t.Familia,
        CONCAT((DAY(t.Tiempo) - 1) * 24 + DATEPART(HOUR, t.Tiempo), FORMAT(t.Tiempo, ':mm:ss'))
    FROM
        (
    	   SELECT i.Familia, DATEADD(SECOND, SUM(DATEDIFF(SECOND, 0, i.Tiempo)), 0) AS [Tiempo] 
    	   FROM Ingreso i GROUP BY i.Familia
        ) t

    ** Recordarte que existe un foro para las preguntas que tengan que ver con t-sql.

    • Propuesto como respuesta Pablo Rubio jueves, 7 de diciembre de 2017 16:55
    • Marcado como respuesta El_vena viernes, 8 de diciembre de 2017 19:12
    jueves, 7 de diciembre de 2017 16:17
  • Hola El_vena

    Con base a tu consulta, te recomiendo visitar el siguiente enlace en donde trata acerca de Transact-SQL +SUMA, puede serte de mucha utilidad.

    https://docs.microsoft.com/es-es/sql/t-sql/language-elements/add-transact-sql

    Quedamos al pendiente de cualquier actualización de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 7 de diciembre de 2017 16:58