在SQL SERVER 2000数据库中有一个视图, DateTimePicker做一段时间的查询,我使用以下方法编译通过了,但是查不到相应的数据。   
ADOQuery1.SQL.Add('select *from churu where fdatetime>='+datetostr(DateTimePicker1.Date)+' and fdatetime<='+datetostr(DateTimePicker2.Date)+'    order by fdatetime');
请各位大虾帮忙!谢谢!

解决方案 »

  1.   

    ADOQuery1.SQL.Add('select *from churu where fdatetime>='''+datetostr(DateTimePicker1.Date)+''' and fdatetime <='''+datetostr(DateTimePicker2.Date)+'''    order by fdatetime'); 这样行不行?
      

  2.   

    with adoquery1 do
    begin
      close;
      sql.text :='select *from churu where fdatetime>=:d1  and fdatetime <=:d2    order by fdatetime';
      parameters.parambyname('d1').value := datetimepicker1.date;
      parameters.parambyname('d2').value := datetimepicker2.date;
      open;
    end; 
      

  3.   

    with adoquery1 do 
    begin 
      close;
      sql.clear; 
      sql.add('select * from churu where fdatetime>=:a  and fdatetime <=:b order by fdatetime');
      parameters.parambyname('a').value := datetimepicker1.text; 
      parameters.parambyname('b').value := datetimepicker2.text; 
      open; 
    end; 
      

  4.   


    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.add('select * from churu where fdatetime between  ('+quotedstr(datetimepicker1.date)+'and '+quotedstr(datetimepicker2.date)+')');
      open;
    end; 
      

  5.   

    第一确定有数据.
    第二.你取的只是日期,还能把时间给补上,来个全封闭.呵呵.edate,sdate:string;
    if DateTimePicker1.Date<DateTimePicker2.Date then
    begin
      sdate:=FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date)+' 00:00:00';
      edate:=FormatDateTime('YYYY-MM-DD',DateTimePicker2.Date)+' 23:59:59';
    end
    else
    begin
      sdate:=FormatDateTime('YYYY-MM-DD',DateTimePicker2.Date)+' 00:00:00';
      edate:=FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date)+' 23:59:59';
    endADOQuery1.SQL.Add('select *from churu where (fdatetime between '+sdate+' and  '+edate+')    order by fdatetime'); 
      

  6.   

    得告诉你的是,你编译通过了是因为sql.add('')是正确的,但是你的sql语句却不一定正确,
    所以建议你还是得好好检查下你的sql语句。
      

  7.   

    窗口創建時初始化datetimepicker1,
    datetimepicker1.datetime := date ;
      

  8.   

    SQL.CLEAR;
    SQL.Add('SELECT * FROM PICKPI where 日期>=:begintime AND 日期<=:endtime');
    parameters.ParamByName('begintime').value:=formatdatetime('yyyy-mm-dd',DateTimePicker3.date);
    parameters.ParamByName('endtime').value:=formatdatetime('yyyy-mm-dd',DateTimePicker4.date);
      

  9.   

    楼上的都正解,别忘了时间要单引号,还有用between比较好
      

  10.   

          sql.Text:='select * from ConsultationRecord,ClientBaseInfo where (ConsultTime between :btime and :etime) and (AgentCode=:AgentCode) and (ConsultationRecord.cid = ClientBaseInfo.id)';
          parameters.ParamByName('btime').Value:=trunc(self.DateTimePicker1.Date)+frac(self.DateTimePicker3.Time);
          parameters.ParamByName('etime').Value:=trunc(self.DateTimePicker2.Date)+frac(self.DateTimePicker4.Time);
      

  11.   

    最佳答案是:
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ss:=format('select *from churu where fdatetime>=''%S'' and fdatetime<=''%S'' order by fdatetime ',[datetostr(DateTimePicker1.Date),datetostr(DateTimePicker2.Date)]);
        ADOQuery1.SQL.Add(ss);
        ADOQuery1.Open;