Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2008
sergiojime sergiojime is offline
Registrado
 
Registrado: ago 2008
Posts: 2
Poder: 0
sergiojime Va por buen camino
Unhappy Sumar Horas DateTime

Hola, Necesito sumar Campo Hora de una tabla este campo es un DATETIME,
El Caso es que no consigo que me haga la suma correctamente he intentado lo siguiente:
Código SQL [-]
SELECT     IP AS PABX, Fecha, OutTrunkID AS Linea, CONVERT(DATETIME, CONVERT(CHAR(3), 
 SUM(DATEPART(MINUTE, Duration)) / 60 + SUM(DATEPART(HOUR, Duration))) + ':' + 
 CONVERT(CHAR(3), SUM(DATEPART(Minute, Duration)) % 60)) AS Duracion
FROM         dbo.IPOStat
GROUP BY IP, OutTrunkID, Fecha
HAVING      (OutTrunkID <> '')

Pero no me lo suma correctamente

Última edición por dec fecha: 29-08-2008 a las 10:09:24.
Responder Con Cita
  #2  
Antiguo 29-08-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
- ¿Para qué base de datos es? Quizás haya alguna base de datos que te permita hacerlo con alguna función especial. Con el tema fechas y conversiones de tipo, cada base de datos es un poco especial.

- Dices que no lo hace correctamente. ¿Qué significa eso? ¿Da un error o el resultado no es correcto?

- Por lo que veo estás tratando de convertir formatos, pero no entiendo bien lo que quieres hacer.

¿El resultado que deseas es un número con decimales que te diga cuantas horas ha durado algo? (10 minutos + 50 minutos + 30 minutos = 1,5 horas)

Si es así, supongo que deberías sumar de la siguiente manera:

sum(horas) + sum (minutos) / 60 + sum (segundos) / 3600

- Veo además que utilizas el % para convertir algo de los minutos. ¿Es eso correcto?

Código SQL [-]
CONVERT(DATETIME, 
   CONVERT(CHAR(3),
      SUM(DATEPART(MINUTE, Duration)) / 60 + 
      SUM(DATEPART(HOUR, Duration))) + ':' + 
      CONVERT(CHAR(3), 
         SUM(DATEPART(Minute, Duration)) % 60)) AS Duracion
Responder Con Cita
  #3  
Antiguo 29-08-2008
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Hola
No se que motor de base de datos utilizas, pero en firebird, interbase e incluso en paradox puedes utilizar
Código SQL [-]
select extract(year from fecha) as anio, 
extract(month from fecha) as mes, 
extract(day from fecha) as dia,
extract(hour from fecha) as hora,
extract(minute from fecha) as minutos, 
extract(second from fecha) as segundos 
from tabla

la respuesta son enteros y los puedes sumar sin problemas
tambien se puede tomar el dia de la semana extract(weekday from fecha)

Suerte
Responder Con Cita
  #4  
Antiguo 29-08-2008
sergiojime sergiojime is offline
Registrado
 
Registrado: ago 2008
Posts: 2
Poder: 0
sergiojime Va por buen camino
Talking

Bueno, ya lo tengo el motor es sql server 2005, y lo que queria es poder sumer el tiempos que estan en formato DATETIME y que el resultado tb sea un DATETIME. Ej

02:30:20
02:30:00

Resultado : 05:00:20

Al final la consulta correcta es la siguiente, os la pongo asi si os pasa alguna vez podieis hacerlo asi ya que en internet no encontre nada correcto.

Código SQL [-]
SELECT     id, CONVERT(DATETIME, CONVERT(CHAR(3), SUM(DATEPART(MINUTE, fecha)) / 60 + SUM(DATEPART(HOUR, fecha))) + ':' + CONVERT(CHAR(3),
                      SUM(DATEPART(MINUTE, fecha)) % 60) + ':' + CONVERT(CHAR(3), SUM(DATEPART(SECOND, fecha)) % 60)) AS Expr1
FROM         dbo.fechas
GROUP BY id

Bueno espero que os sirva de ayuda
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como pasar un DateTime a formato Horas? Jonathan96 SQL 13 15-01-2009 19:13:59
Sumar Horas BuenaOnda MySQL 6 10-07-2008 08:48:37
Sumar Horas BuenaOnda MS SQL Server 7 26-01-2008 04:12:03
Sumar un Nº de meses un DateTime armadillo Firebird e Interbase 2 07-06-2006 19:27:56
Sumar Horas?? YolandaM Varios 4 09-11-2003 09:21:46


La franja horaria es GMT +2. Ahora son las 08:51:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi