Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 21-01-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Ahi tienes que usar es funciones de fecha, no de numero.
Efectivamente, pero es que en algún sitio había visto que se podía usar el SUM sobre valores de tiempo.
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Seguro que es dialecto 3?
La definición de la BB.DD. está puesta así:
Código SQL [-]
Ocio->Connected               = false;
Ocio->DatabaseName            = "Tablas\\Ocio.fdb";
Ocio->SQLDialect              = 3;
Ocio->Params->Clear();
Ocio->Params->Add("USER 'sysdba'");
Ocio->Params->Add("PASSWORD 'masterkey'");
Ocio->Params->Add("PAGE_SIZE 4096");
Ocio->Params->Add("DEFAULT CHARACTER SET ISO8859_1 COLLATION ES_ES_CI_AI");
Ocio->CreateDatabase();
Así que sí, es dialecto 3.
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Yo optaría por guardar internamente los tiempos en segundos (en BD).
Luego a la hora de pintarlos sólo tienes que pasarlos a horas, minutos y segundos. Es una cuestión de visualización.

De esa forma puedes usar la funciones tipo SUM sin problemas.
Es una alternativa que no se me había ocurrido pero te obliga a decodificar el tiempo para poder guardarlo en segundos con lo cual al final tienes el mismo trabajo; he optado por el segundo query de mi mensaje (SUM(EXTRACT(HOUR FROM Tiempo)) Hora) y queda así el código:
Código:
int Hora, Minuto, Segundo;

Query->Close();
Query->SQL->Text = "SELECT Disco, SUM(EXTRACT(HOUR FROM Tiempo)) Hora, 
                                  SUM(EXTRACT(MINUTE FROM Tiempo)) Minuto, 
                                  SUM(EXTRACT(SECOND FROM Tiempo)) Segundo 
                      FROM Pistas GROUP BY Disco ORDER BY Disco";
Query->Open();

for (; !Query->Eof; Query->Next())
{
     Segundo = Query->FieldByName("Segundo")->AsInteger % 60;
     Minuto = Query->FieldByName("Minuto")->AsInteger + (int)Query->FieldByName("Segundo")->AsInteger / 60;
     Hora = Query->FieldByName("Hora")->AsInteger + (int)Query->FieldByName("Minuto")->AsInteger / 60;
     Minuto = Minuto % 60;
     [...]
}
Muchas gracias por todas vuestras sugerencias.
Responder Con Cita
 



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
restar tiempos Nostradonuts Varios 2 15-04-2011 20:09:48
Calculo de tiempos jafera Varios 9 04-11-2010 12:08:47
Sumar Tiempos en una Select Salomon Firebird e Interbase 4 09-12-2004 18:07:05
Sumar tiempos Aztaroth SQL 1 06-05-2004 19:36:37
Sumar tiempos con SUM Ruben_Cu SQL 4 03-11-2003 03:10:49


La franja horaria es GMT +2. Ahora son las 20:42:54.


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