Consulta entre Datas
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
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
Curtidas 0
Respostas
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
[]s
GOSTEI 0
Motta
02/10/2006
Qual BD ?
Alguns tem a hora junto ao formato de Data o que pode gerar problemas.
Alguns tem a hora junto ao formato de Data o que pode gerar problemas.
GOSTEI 0
Leandrosl
02/10/2006
Amigo, a dica não funcionou não
GOSTEI 0
Micheus
02/10/2006
[b:730dd04600]Leandrosl[/b:730dd04600], será que vc não deveria utilizar o SQL desta forma:
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:
[]s
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
02/10/2006
Ok micheus, funciono
Obrigado
Obrigado
GOSTEI 0