none
Sumar columnas horas RRS feed

  • Pregunta

  • Hola, buenas tardes, tengo una tabla entre los cuales tengo 2 campos, que registra la hora de entrada y salida de un estudiante de un departamento.

    Necesito obtener la cantidad de horas acumuladas que lleva registrado el estudiante, para eso debo restar la diferencia de horas entre la hora de salida y la hora de entrada fila por fila para despues obtener la sumatoria total.

    Estaba utilizando la siguiente instrucción: 

    SELECT CONVERT(time,DATEADD(SECOND,SUM(DATEDIFF(SECOND, CONVERT(time, HoraEntrada,108), CONVERT(time, HoraSalida,108))),0)) AS HorasAcumuladas
    FROM TbRegistroAsistencia WHERE IdEstudiante = @idEstudiante

    Pero el problema con esta instrucción es que al llegar a 24 horas, se resetea de 0 de nuevo a sumar.

    Deseo por ejemplo que quede así 180:23  (180 horas, 23 minutos por ejemplo) y si se puede dejarlo solo en horas mejor eliminado los minutos.

    Cualquier ayuda estaré muy agradecido.

     

     

    jueves, 11 de enero de 2018 22:49

Respuestas

  • ASi a lo senzillo sin complicarme mucho se me ocurre lo siguiente:

    select * ,cast(horas as nvarchar) + ':' + cast(minutos as nvarchar) FormatoHorasMinutos

    from(

    Select IdEstudiante , totalminutos \ 60 horas, totalminutos % 60 minutos

    from(

    Select IdEstudiante,Sum(DifMinutos) totalminutos

    from 

    (

    Select IdEstudiante ,

    DATEDIFF (Minute, fecha_toma_pedido, fecha_llegada_pedido) As DifMinutos,


    from TuTabla

    ) consulta0

    groupb by idestudiante

    ) consulta1

    ) consulta2

    order by horas,minutos,IdEStudiante



    • Editado vyrcyrus_ jueves, 11 de enero de 2018 23:39
    • Propuesto como respuesta vyrcyrus_ jueves, 11 de enero de 2018 23:39
    • Marcado como respuesta JCORBETTO viernes, 12 de enero de 2018 0:05
    jueves, 11 de enero de 2018 23:35
  • Creo que así te da lo que buscas en horas.

    SELECT SUM(DATEDIFF(SECOND,HoraEntrada,HoraSalida))/3600.0 AS HorasAcumuladas
    FROM TbRegistroAsistencia
    WHERE IdEstudiante = @idEstudiante

    Saludos


    SELECT SUM(DATEDIFF(SECOND,HoraEntrada,HoraSalida))/3600.0 AS HorasAcumuladas FROM TbRegistroAsistencia WHERE IdEstudiante = @idEstudiante

    Ing. Jose Mariano Alvarez - http://blog.josemarianoalvarez.com

    • Marcado como respuesta JCORBETTO viernes, 12 de enero de 2018 0:04
    jueves, 11 de enero de 2018 23:42

Todas las respuestas

  • ASi a lo senzillo sin complicarme mucho se me ocurre lo siguiente:

    select * ,cast(horas as nvarchar) + ':' + cast(minutos as nvarchar) FormatoHorasMinutos

    from(

    Select IdEstudiante , totalminutos \ 60 horas, totalminutos % 60 minutos

    from(

    Select IdEstudiante,Sum(DifMinutos) totalminutos

    from 

    (

    Select IdEstudiante ,

    DATEDIFF (Minute, fecha_toma_pedido, fecha_llegada_pedido) As DifMinutos,


    from TuTabla

    ) consulta0

    groupb by idestudiante

    ) consulta1

    ) consulta2

    order by horas,minutos,IdEStudiante



    • Editado vyrcyrus_ jueves, 11 de enero de 2018 23:39
    • Propuesto como respuesta vyrcyrus_ jueves, 11 de enero de 2018 23:39
    • Marcado como respuesta JCORBETTO viernes, 12 de enero de 2018 0:05
    jueves, 11 de enero de 2018 23:35
  • Creo que así te da lo que buscas en horas.

    SELECT SUM(DATEDIFF(SECOND,HoraEntrada,HoraSalida))/3600.0 AS HorasAcumuladas
    FROM TbRegistroAsistencia
    WHERE IdEstudiante = @idEstudiante

    Saludos


    SELECT SUM(DATEDIFF(SECOND,HoraEntrada,HoraSalida))/3600.0 AS HorasAcumuladas FROM TbRegistroAsistencia WHERE IdEstudiante = @idEstudiante

    Ing. Jose Mariano Alvarez - http://blog.josemarianoalvarez.com

    • Marcado como respuesta JCORBETTO viernes, 12 de enero de 2018 0:04
    jueves, 11 de enero de 2018 23:42