PDA

Ver la Versión Completa : Consulta con Fechas


inetplus
08-04-2004, 02:05:06
Tengo el siguiente codigo:
//
QueryFacturas.Close;
QueryFacturas.SQL.Clear;

lineasql:='Select * from Factura.db where Fecha >= ' +
QuotedStr(FormatDateTime('dd/mm/yyyy',strtodate(fecdes))) +' and Fecha <= ' + QuotedStr(FormatDateTime('dd/mm/yyyy',strtodate(FECHAS)));

QueryFacturas.SQL.Add(lineasql);
QueryFacturas.Open;

//
Donde FECDES = 07/02/2003 y FECHAS = 07/04/203

Cuando realizo la consulta intercambia los dias por meses es decir que en este caso buscaría aquellos registros que se encuentran entre las fechas 02/07/2003 y 04/07/2003.

A que se debe esto ?

marto
08-04-2004, 09:51:28
Wop!

Pues muy probablemente se deba a tu motor de base de datos (que no dices cuál es). Si este está configurado para trabajar con formato de fechas mm/dd/yyyy, esperará que le pases las fechas en este formato. Prueba cambiando el formato de FormatDateTime.

Nadie
08-04-2004, 16:47:32
te recomiendo en vez de usar >= y <= uses between, la sintaxis seria fecha between :diadesde and :diahasta, como dijo marto dependiendo el motor de base de datos el formato y los comandos de fecha cambian, para eso es recomendado usar parambyname y fieldbyname

haron
08-04-2004, 21:09:41
en este caso lo que yo hago es lavarme las manos. que el formato sea responsabilidad de delphi, no mia.

hazlo asi, a ver si te sirve:

QueryFacturas.Close;
QueryFacturas.SQL.text:='Select * from Factura.db where Fecha >= :fecha_desde and Fecha <= :fecha_hasta';
QueryFacturas.paramByName('fecha_desde').value:=fecdes;
QueryFacturas.paramByName('fecha_hasta').value:=fechas;
QueryFacturas.Open;

de esta forma creo que te va a servir para todas las bases de datos y no tienes que preocuparte por el formato de las fechas, ya que eso es responsabilidad de Delphi.