locked
Sumar horas en una consulta RRS feed

  • Pregunta

  • ¡Hola!. Mi problema es que quiero hacer una consulta tipo consolidado con datos de hora. Algo así:
    Horas
    00:30
    04:00
    00:45
    05:45
    05:45
    01:21
    04:00

    ¿Alguien sabe como resolver esto? ^^

    Protip: los minutos llegados a 60 deben sumar a la parte de horas

    saludos

    miércoles, 30 de abril de 2008 12:05

Respuestas

Todas las respuestas

  • ¿Que base de datos?, ¿Que version?, ¿Que tipo de dato es el que quiere sumar (CHAR, VARCHAR, DATETIME, etc.)?
    miércoles, 30 de abril de 2008 18:20
  • La base de datos es SQL Server 2000, los datos tipo varchar (aunque tambien me gustaria saber la solucion en datetime si no es mucha molestia Wink )

     

    ss

     

    miércoles, 30 de abril de 2008 22:33
  • Para los campos tipo DATETIME, es tan facil como sacar las horas y los minutos y sumarlos

     

    Para el caso que pones:

     

    -- creo tabla temporal

    create table #horas (hora char(5))

    -- inserto registros de prueba

    insert into #horas values('00:30')

    insert into #horas values('04:00')

    insert into #horas values('00:45')

    insert into #horas values('05:45')

    insert into #horas values('05:45')

    insert into #horas values('01:21')

    insert into #horas values('04:00')

    -- Sumo

    select sum(cast(left(hora, 2) as int)) as horas,

    sum(cast(right(hora, 2) as int)) as minutos

    from #horas

     

    Horas Minutos

    19       186

     

    ¿Asi?

     

     

    miércoles, 30 de abril de 2008 23:37
  • No no. Algo asi:

     

    '00:30'

    '04:00'

    '00:45'

    '05:45'

    '05:45'

    '01:21'

    '04:00'

    -------

    xx:xx

     

    ss

    viernes, 2 de mayo de 2008 2:19
  • ¿Que esperas como TOTAL (xx:xx)?

     

    viernes, 2 de mayo de 2008 15:39
  • 00:30
    04:00
    00:45
    05:45
    05:45
    01:21
    04:00
    -------
    22:06

    Ese tipo de resultado me refiero, mediante una consulta.

    saludos
    viernes, 2 de mayo de 2008 20:11
  • ¿Y no seria tan facil como tomar la suma de los minutos, dividirla ENTRE 60, sumar el total a horas y el restante, considerarlo como los minutos?

     

    viernes, 2 de mayo de 2008 22:30
  • Bueno si.. pero pense que quiza habia alguna funcion que lo haga aun mas sencillo.. en fin gracias Smile

    domingo, 4 de mayo de 2008 5:26
  • ¿Aun mas sencillo?, no creo, saludos.

     

    lunes, 5 de mayo de 2008 15:11
  • Creo que lo que estas buscndo es algo como eto:

     

    select isnull(uno.hora,'0')as hora, isnull(ltrim(rtrim(cast(dos.horas as char)))+ ':' + ltrim(rtrim(cast(dos.minutos as char))),'0') as suma

    from (select hora

    from #horas

    group by hora)uno

    full outer join

    ( select sum(cast(left(hora, 2) as int)) as horas,

    sum(cast(right(hora, 2) as int)) as minutos

    from #horas

    )dos on uno.hora=ltrim(rtrim(cast(dos.horas as char)))+ ':' + ltrim(rtrim(cast(dos.minutos as char)))

     

    Espero que te sirva.

     

    Saludos!!!

    miércoles, 7 de mayo de 2008 18:03