Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Resta de datos Datetime SQL (https://www.clubdelphi.com/foros/showthread.php?t=44525)

drakkon 08-06-2007 08:51:36

Resta de datos Datetime SQL
 
Tengo un pequeño problema por que no se como realizar una resta entre dos datos (datetime) de una tabla de una BD mysql. Bueno, me explico...

Tengo la tabla 'Rentas' en donde tengo los campos 'fecha_devol' y 'dias_retraso', es en este último donde debo calcular los dias que han transcurrido a partir de la fecha de devolucion. Para ello se me ocurre realizar una resta entre la fecha actual y la registrada en 'fecha_devol'. Pero no puedo hacerlo. Les agradecería mucho si pudieran decirme cómo hacer esto o tuvieran alguna mejor solución.

karlaoax 08-06-2007 17:25:32

Mira si no recuerdo mal los campos DATE se tratan como valores numericos

var
fechahoy,fecharenta:tdate;

Boton:
Fechahoy:=strtodate(txtFechahoy.text);
Fecharenta:=strtodate(txtFecharenta.text);
Fechatotal:=FechaHoy-Fecharenta;

if (Fechatotal<7)then //Le puse 7 digamos como para una modica multa
begin
showmessage('Ganaste una multa');
end
else begin
showmessage('Entrega a tiempo');
end;

Bueno, no he probado este codigo, pero si mi procesador Core 2 Duo no me falla en mi cabeza debe funcionar ;)

Avisas si queda el codigo, si no para buscar una mejor solucion.
Si tienen mas sugerencias, bienvenidas para seguir aprendiendo a manejar Delphi.

Karla :p

felipe88 08-06-2007 22:27:58

Si usas componenetes con la fecha, como por ejemplo un monthcalendar,
puedes restarlas desde delphi primero convirtiendolas a string y luego a float manejando el tipo de variable como extended para poder soportar las fechas... tal vez asi con una que otra corrreccion:

procedure TForm1.BitBtn1Click(Sender: TObject);
var f1, f2, resultado : Extended;
fecha1, fecha2 : String;
begin
fecha1:= DateToStr(MonthCalendar1.Date);
fecha2:= DateToStr(MonthCalendar2.Date);
f1:= StrToFloat(fecha1);
f2:= StrToFloat(fecha2);
resultado:= Round(f1-f2); // La fecha uno obviamente debe ser mayor, la funcion round permite solo tener la fecha sin los decimales de la hora para evitar errores al comparar
Edit1.Text:= FloatToStr(resultado);
end;

Igualmente si la necesitas como fecha solo debes convertirla... Si tienes otra idea sera mejor...:)


La franja horaria es GMT +2. Ahora son las 14:41:46.

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