Ver la Versión Completa : Fecha y hora por separado como comparar
zugazua2001
21-05-2006, 01:37:34
Hola amigos del foro, tengo dos campos por separado uno es la hora y el otro es la fecha de la fichada de un empleado.
Existe algun modo de concatenar obtener la diferencia en horas de dos fichadas de un empleado de manera rapida.
Ejm:
fichada 1: hora: 05:05 fecha: 01/03/2006
fichada 2: hora: 12:06 fecha: 02/03/2006
Cant Horas: 31 horas 1 minuto.
Gracias por todo nuevamente.
Saludos
¿por código delphi o SQL?
zugazua2001
22-05-2006, 03:34:38
Yo decia por codigo delphi.
Si podes orientame tambien con SQL.
Gracias por tu ayuda.
¿por código delphi o SQL?
luisgutierrezb
22-05-2006, 18:15:57
suponiendo que son variables TDateTime, en delphi seria
var
diferenciaDias:Integer;
diferenciaHoras:TDateTime;
begin
diferenciaDias := Trunc(fichada2) - Trunc(fichada1);
diferenciaHoras := Frac(fichada2) - frac(fichada1);
//para mostrar:
ShowMessage('diferencia en dias: ' + IntToStr(diferenciadias));
ShowMessage('diferencia en horas: ' + FormatDateTime('hh:nn:ss', diferenciahoras);
end;
Hola amigos del foro, tengo dos campos por separado uno es la hora y el otro es la fecha de la fichada de un empleado.
Existe algun modo de concatenar obtener la diferencia en horas de dos fichadas de un empleado de manera rapida.
Ejm:
fichada 1: hora: 05:05 fecha: 01/03/2006
fichada 2: hora: 12:06 fecha: 02/03/2006
Cant Horas: 31 horas 1 minuto.
Gracias por todo nuevamente.
Saludos
Se me olvidó preguntar para qué base de datos (paradox, firebrid etc.). Para Firebird tienes este hilo (http://www.clubdelphi.com/foros/showthread.php?t=18192&highlight=DIFERENCIA+HORA) aunque da los minutos, tendrás que convertirlo.
por código delphi tienes varias opciones:
- Si lo tienes guardado como texto, intenta con TablaNombreCampo.AsDate, AsTime
Otra opción es concatenando la fecha y hora (como texto) y pasarsela a StrToDatetime
- Si no, usa EncodeDatetime, EncodeDate, RecodeTime, etc de la unidad DateUtils
Tendrás que hacerlo a mano, hoy no estoy muy inspirado, solo se me ocurre esto:
procedure Tform1.btn1Click(Sender: TObject);
var h,m:Word;
s:string;
begin
h := HoursBetween(Now,Now-5);
m := MinutesBetween(Now ,Now-5) - (h*60);// restamos las horas que han pasado
ShowMessage(IntToStr(h)+':'+IntToStr(m));
end;
Saludos
zugazua2001
22-05-2006, 18:55:46
Como en tantas otras oportunidades me han dado una mano.
Muchisimas gracias
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.