Consultar Campo do Tipo TimeStamp

Delphi

08/03/2006

pessoal to passando por um problema, onde encontri uma solução mais não sei se é a mais cabivel...

tenho um campo chamado Hora_I(TimeStamp)em um tabela do meu banco de dados (Interbase), e gostaria de fazer uma consulta a esse campo indicando apenas a data em uma consulta por exemplo:

os dados no campo ficam assim: [i:44d607f792][b:44d607f792]07/03/2006 15:54:10[/b:44d607f792][/i:44d607f792] por exemplo.

e na hora da consulta quero informar apenas a data e quero que ele me retorne os dados daquele dia, tentei assim:
 With DM, QYLOCACOES do
  begin
   Close;
   SQL[1]:=´WHERE HORA_I BETWEEN :Di AND :Df AND CLIENTE=:CODCLI´;
   Prepare;
   ParamByName(´CODCLI´).AsInteger := _IdCliente;
   ParamByName(´Di´).AsDateTime := DateTimePicker1.DateTime;
   ParamByName(´Df´).AsDateTime := DateTimePicker2.DateTime;
   Open;
  end;


mais quando eu seleciono as duas datas iguais ele não me retorna nada como resposta, mesmo escolhendo uma data que existe na base.

também tentei assim:
 With DM, QYLOCACOES do
  begin
   Close;
   SQL[1]:=´WHERE HORA_I >=:Di AND HORA_I <=:Df AND CLIENTE=:CODCLI´;
   Prepare;
   ParamByName(´CODCLI´).AsInteger := _IdCliente;
   ParamByName(´Di´).AsDateTime := DateTimePicker1.DateTime;
   ParamByName(´Df´).AsDateTime := DateTimePicker2.DateTime;
   Open;
  end;

e deu no mesmo

e ai :wink:


Paullsoftware

Paullsoftware

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

08/03/2006

Cara eu faço assim:

 

procedure ...
var
  DtIni, DtFim : TDateTime;
begin

  DtIni := DateTimePicker1.Date + ´00:00:01´;
  DtFim := DateTimePicker2.Date + ´23:59:59´;

  With DM, QYLOCACOES do
  begin
    ...
    ParamByName(´Di´).AsDateTime := DtIni;
    ParamByName(´Df´).AsDateTime := DtFim;
    ...
  end;
end;



GOSTEI 0
Adriano Santos

Adriano Santos

08/03/2006

[quote:2217761715=´Adriano Santos´]Cara eu faço assim:

 

procedure ...
var
  DtIni, DtFim : TDateTime;
begin
  //Só uma coisa, precisa dar espaço na concatenação da hora.
  DtIni := DateTimePicker1.Date + ´ 00:00:01´;
  DtFim := DateTimePicker2.Date + ´ 23:59:59´;

end;
[/quote:2217761715]


GOSTEI 0
Paullsoftware

Paullsoftware

08/03/2006

Valeu pela dica, mais não funcionou!

ficou assim meu código:
 with DM,QYLOCACOES do
  begin
   DiaIni := dtp1.Date + StrToTime(´ 00:00:01´);
   DiaFim := dtp2.Date + StrToTime(´ 23:59:59´);
   Close;
   SQL[1] := ´WHERE Upper(PC_NOME) STARTING WITH :PC AND HORA_I >=:Di AND HORA_I <=:Df ´;
   SQL[2] := ´ORDER BY PC_NOME ´;
   ParamByName(´PC´).AsString     := EditPesquisa.Text;
   ParamByName(´Di´).AsDateTime   := DiaIni;
   ParamByName(´Df´).AsDateTime   := DiaFim;
   Open;
  end;

alguém tem outra ideia? :roll:


GOSTEI 0
Adriano Santos

Adriano Santos

08/03/2006

Valeu pela dica, mais não funcionou! ficou assim meu código:
 with DM,QYLOCACOES do
  begin
   DiaIni := dtp1.Date + StrToTime(´ 00:00:01´);
   DiaFim := dtp2.Date + StrToTime(´ 23:59:59´);
   Close;
   SQL[1] := ´WHERE Upper(PC_NOME) STARTING WITH :PC AND HORA_I >=:Di AND HORA_I <=:Df ´;
   SQL[2] := ´ORDER BY PC_NOME ´;
   ParamByName(´PC´).AsString     := EditPesquisa.Text;
   ParamByName(´Di´).AsDateTime   := DiaIni;
   ParamByName(´Df´).AsDateTime   := DiaFim;
   Open;
  end;
alguém tem outra ideia? :roll:


Cara tenta usar SQLTimeStamp no lugar de AsDateTime, ou você pode tentar assim

   DiaIni := FormatDateTime(´DD/MM/YYYY HH:NN:SS´,dtp1.Text + ´ 00:00:01´);
   DiaFim := FormatDateTime(´DD/MM/YYYY HH:NN:SS´,dtp2.Text + ´ 23:59:59´);



GOSTEI 0
Paullsoftware

Paullsoftware

08/03/2006

DiaIni := FormatDateTime(´DD/MM/YYYY HH:NN:SS´,dtp1.Text + ´ 00:00:01´); DiaFim := FormatDateTime(´DD/MM/YYYY HH:NN:SS´,dtp2.Text + ´ 23:59:59´);

Correção:
DiaIni := FormatDateTime(´DD/MM/YYYY HH:NN:SS´, StrToDateTime(dtp1.Text + ´ 00:00:01´)); 
DiaFim := FormatDateTime(´DD/MM/YYYY HH:NN:SS´,StrToDateTime(dtp2.Text + ´ 23:59:59´)); 


Valeu Adriano, meu código ficou assim:

 With DM, QYLOCACOES do
  begin
   Close;
   SQL[1]:=´WHERE HORA_I BETWEEN :Di AND :Df AND CLIENTE=:CODCLI´;
   Prepare;
   ParamByName(´CODCLI´).AsInteger := _IdCliente;
   ParamByName(´Di´).AsString    := FormatDateTime(´dd/mm/yyyy 00:00:01´, DateTimePicker1.Date);
   ParamByName(´Df´).AsString    := FormatDateTime(´dd/mm/yyyy 23:59:59´, DateTimePicker2.Date);
   Open;
 end;

Valeu! :wink:


GOSTEI 0
Adriano Santos

Adriano Santos

08/03/2006

É isso PallSoftware, precisando pode dar um toque.

[]s :wink:


GOSTEI 0
POSTAR