![]() |
Consulta con Fechas
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 ? |
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. |
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
|
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. |
La franja horaria es GMT +2. Ahora son las 00:59:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi