Consulta entre Datas

Delphi

02/10/2006

Pessoal

Sempre fiz pesquisa entre data dessa forma

With QuerytabelaDo
Begin
Close;
SQL.Clear;
SQL.Text:=´SELECT * FROM tabela WHERE DataInicio AND DataFinal BETWEEN :DataInicial AND :DataFinal´;
ParamByName(´DataInicial´).AsString := FormatDateTime(´yyyy-mm-dd´, DateTimePicker1.Date);
ParamByName(´DataFinal´).AsString := FormatDateTime(´yyyy-mm-dd´, DateTimePicker2.Date);
SQL.Add(´ORDER BY Campo´);
Open;
End;

Acho que esse é um jeito certo de fazer essa pesquisa, mas quando vou fazer ele não traz os registros que estou precisando
Ex:

Data1: 01/10/2006
Data2: 03/03/2006

Se eu colocar uma pesquisa entre 02/10/2006 e 02/03/2006 ele está trazendo essas 2 datas que eu coloquei como exemplo, ele não podia trazer nenhum.

Obs: Na minha tabela tenho esse 2 campos (Data1,Data2), e é através dele que estou fazendo a consulta.

Alguém poderia me dizer o que está errado ?


Obrigado


Leandrosl

Leandrosl

Curtidas 0

Respostas

Titanius

Titanius

02/10/2006

Tente trocar o .AsString por .AsDateTime nos parametros... é a melhor forma de se tratar datas em parametros.. talvez resolva teu problema..


[]s


GOSTEI 0
Motta

Motta

02/10/2006

Qual BD ?
Alguns tem a hora junto ao formato de Data o que pode gerar problemas.


GOSTEI 0
Leandrosl

Leandrosl

02/10/2006

Amigo, a dica não funcionou não


GOSTEI 0
Micheus

Micheus

02/10/2006

[b:730dd04600]Leandrosl[/b:730dd04600], será que vc não deveria utilizar o SQL desta forma:
SELECT *
FROM tabela 
WHERE DataInicio BETWEEN :DataInicial AND :DataFinal 
  AND DataFinal BETWEEN :DataInicial AND :DataFinal

Desde que os campos DataInicio e DataFinal em sua tabela sejam do tipo DATE, seria realmente mais apropriado que vc os passasse como data, evitaria qualquer problema com conversão:
ParamByName(´DataInicial´).AsDateTime := DateTimePicker1.Date;
ParamByName(´DataFinal´).AsDateTime := DateTimePicker2.Date;


[]s


GOSTEI 0
Leandrosl

Leandrosl

02/10/2006

Ok micheus, funciono

Obrigado


GOSTEI 0
POSTAR