我用了两个datetimepicker控件来设定时间段进行数据库查询,可始终就是结果为空,怪事,情高手帮助!由于我已经没有分给了,可是还有很多问题,请高手们见谅!
datamodule1.ADOQuery1.Close;
datamodule1.ADOQuery1.SQL.Clear;
firsttime:=datetostr(datetimepicker1.date)+' 00:00:00';
endtime:=datetostr(datetimepicker2.date)+' 23:59:59';
datamodule1.ADOQuery1.SQL.Add('select time from 数据库 where ((time>=:firsttime) and (time<=:endtime))');
datamodule1.ADOQuery1.Open ;
数据库中time字段我用了文本类型,这样好比较一些!统一都是年月日加具体时间的格式.

解决方案 »

  1.   

    用的是什么数据库?
    time在SQL SERVER里好象是关键字.datamodule1.ADOQuery1.SQL.Add('select [time] from 数据库 where (([time]>=:firsttime) and ([time]<=:endtime))');加上[],就可以迴避关键字的限制.
      

  2.   

    我来拿分!呵呵~~~
    ...
    var
        firstTime, endTime: TDateTiem;
    begin
      datamodule1.ADOQuery1.Close;
      datamodule1.ADOQuery1.SQL.Clear;
      firsttime:=datetimepicker1.DateTime;
      endtime:=datetimepicker2.DateTime;
      datamodule1.ADOQuery1.SQL.Add('select time from 数据库 where           ((time>=:firsttime) and (time<=:endtime))');
     datamodule1.ADOQuery1.parambyname('firsttime').asdatetime := firsttime;
     datamodule1.ADOQuery1.parambyname('endtime').asdatetime := endtime;
      datamodule1.ADOQuery1.Open ;...
      

  3.   

    ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Add('select * from 数据库 where (time between :firsttime and :endtime)');
     ADOQuery1.parambyname('firsttime').asdatetime := datetimepicker1.DateTime;
     ADOQuery1.parambyname('endtime').asdatetime := datetimepicker2.DateTime;
     ADOQuery1.Prepare;
     ADOQuery1.Open;SQL 语句中的变量不能与外部变量冲突
      

  4.   

    使用CONVERT 将日期格式转化以下在做比较呢,112 为ISO标准日期格式yymmdd,具体的格式
    参数SQL帮助里有,你可以试一下,我是一直是这样使用的.firsttime和endtime也需和前面的格式一致select time from 数据库 where ((convert(char(6),time,112)>=firsttime) and (convert((char(6),time,112)<=endtime))
      

  5.   

    为什么不用 formatdatime();
     With  ADOQuery1 do  
     begin 
     
     SQL.Clear;
     SQL.Add('select * from 数据库 where (riqi>:firsttime) and (riqi<:endtime)');
     parameters.parambyname('firsttime').value:=   FormatDatetime('2003-04-19',datetimepicker1.Date);
     parameters.parambyname('endtime').value := FormatDatetime('2003-05-06',datetimepicker1.Date);
     active :=true;
     ADOQuery1.Open;end;//你可以在加上你需要的具体时间比较 ,小时、分、秒