Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Convertir fecha en un Where (https://www.clubdelphi.com/foros/showthread.php?t=56547)

Enriquelán 20-05-2008 16:52:05

Convertir fecha en un Where
 
Que tal?

Tengo un problema relacionado con las fechas...

Uso delphi 5 con MySql, y guardo las fechas como cadenas, no propiamente como fechas. El problemas me surgio al querer hacer un reporte de una fecha inicial a otra final, ya que al querer jalar la fecha guardada, viene en cadena y no la puedo comparar con la fecha de un DateTimePicker. Y si las comparo como cadenas, han de saber que "27/04/2008" no es mayor que "29/03/2008". Entonces me veo en la necesidad de compararlas forzosamente como fechas y no como cadenas.

Código Delphi [-]
Query.sql.text:='select * from viajes where Fecha>=datetostr("'+DateTimePicker.date+'")';
Query1.execSql;





Esta consulta, como le decia, no me devuelve los valores correctos, ya que algunas fechas del resultado realmente no son mayores a las del DateTimePicker.

Mi idea era hacer algo como:

Código Delphi [-]
Query.sql.text:='select * from viajes where strtodate(Fecha)>="'+DateTimePicker.date+'")';
Query1.execSql;





O sea, convertir en ese momento la fecha que estoy jalando, pero me salta un error.


Agradezco su atencion.

Caro 20-05-2008 17:29:37

Hola Enriquelán, no te sería mas facil cambiar el tipo de dato a tu campo, la verdad no es normal que a una fecha le pongas como cadena, strtodate no te funcionara porque es una función de Delphi y no de Mysql.

Saluditos

Enriquelán 20-05-2008 17:37:05

Gracias, caro!

Lo que pasa es que ya tengo mucha informacion en ese campo. Al cambiarla, se pierde y tengo que volver a meterla manualmente. Ademas MySql solo ofrece un formato de fecha y no es con el que he venido trabajando, por lo cual tendria que cambiar todo. Y seguro tambien tendre que cambiar el formato de fecha en el panel de control de windows para que quede igual que el de mysql, verdad?

Muchas gracias por tu ayuda!

ContraVeneno 20-05-2008 17:46:04

Podrías utilizar parámetros y de esa forma no tendrías que hacer ninguna conversión:

Código Delphi [-]
with TuDataset do begin
 If active then close;
 SQL.Clear;
 SQL.Add('Select ...');
 SQL.Add('From...');
 SQL.Add('Where fecha < :Fecha');
 ParamByname('Fecha').AsDateTime := UnDTPicker.DateTime;
 Open;
end;


"ExecSQL" se utiliza solo para consultas de modificación (Insert, delete, update...), "Open" se utiliza para consultas normales "Select"

sancarlos 01-07-2008 22:22:56

Man para eso usa el Formatdatatime , sino nunca te saldra , te mando un ejemplo

dateforchancenow:=now; variable a pasar la fehca de tipo tdatetime
formatdatenow:=formatdatetime('mm-dd-yyyy',dateforchancenow); //Asignamos el formato a la Variable de la fecha a Utilizar de tipo string;

luego en where la pones a validar el formatdatenow .

EL formato puede ser difirente, eso depende de la base de datos a usar , puede ser ('dd/mm/yyyy') , es la mas comun.


La franja horaria es GMT +2. Ahora son las 07:50:50.

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