Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2015
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Formato de TimeStamp

Estimados, utilizo Firebird 2.5 y necesito dar formato a una diferencia de 2 campos tipo timestamp.

Por ejemplo si la diferencia es de un día, 2 horas y 45 minutos, que el formato sea 1d 2h 45m.
Si es de 5 horas, que le formato sea 5h
Si es de menos de 1 minutos, que el formato sea <1m

He probado varios código, pero no me está resultado.

Código SQL [-]
select CAST(termino AS time) - CAST(comienzo AS time) as registro from Tabla

select cast(datediff(second, comienzo, termino) as time) as registro from Tabla

Alguna idea como se resuelve esto??

Gracias
Responder Con Cita
  #2  
Antiguo 14-10-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No le corresponde a la base de datos dar formato a un valor, sino a delphi.
Responder Con Cita
  #3  
Antiguo 15-10-2015
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Perfecto... Y como hago eso?? 😁

En la definicion de los campos persistentes del query??
Igual el formato es más complejo que un simple separador de miles...

Como lo hago ??
Responder Con Cita
  #4  
Antiguo 15-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Una opcion es el OnGetText del TField. Tambien podes levantar el valor del campo (AsDateTime) y mandar todo a una funcion y usar alguna variante de FormatDateTime, o DateToStr o una funcion propia
Responder Con Cita
  #5  
Antiguo 15-10-2015
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 21
Combat-F2D Va por buen camino
y no podrias realizarlo devolviendo una string mediante un store procedure???
__________________
online
Responder Con Cita
  #6  
Antiguo 15-10-2015
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Finalmente lo resolví con el siguiente código en evento onGetText del campo del query.

Código Delphi [-]
procedure Tform.IBQuery1REGISTROGetText(Sender: TField;
  var Text: string; DisplayText: Boolean);
var dias, horas, minutos, segundos: integer;
begin
if sender.AsString <> '' then
begin
segundos := sender.AsInteger;

dias := segundos div 86400;
segundos := segundos - dias * 86400;

horas := segundos div 3600;
segundos := segundos - horas * 3600;

minutos := segundos div 60;
segundos := segundos - minutos * 60;

if dias > 0 then text := inttostr(dias)+'d';
if horas > 0 then text := text + ' '+inttostr(horas)+'h';
if minutos > 0 then text := text + ' '+inttostr(minutos)+'m';

if text = '' then
if segundos > 0 then text := '<1m';
end;
end;

Gracias y saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
TimeStamp = TimeStamp me da error Chogo Firebird e Interbase 7 16-03-2011 04:13:38
TIMESTAMP en restriccion Cañones SQL 6 28-08-2007 23:19:27
timestamp y milisegundos Abel Garcia Firebird e Interbase 1 19-09-2005 01:45:06
timestamp y milisegundos ya...... Abel Garcia Firebird e Interbase 0 17-09-2005 07:17:38
Timestamp y bde 5.2 Toni Firebird e Interbase 2 27-05-2003 09:26:33


La franja horaria es GMT +2. Ahora son las 10:33:23.


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