程序如下:
sqlstr:='select * from rsda where drsj<='+''''+datetostr(datetimepicker2.datetime)+''''+' and drsj>='+''''+datetostr(datetimepicker1.datetime)+'''';
.....
with adoquery1 do
begin
close;
clear;
sql.add(sqlstr);
open;
end;
......
可查询时却不能正确查询。请问高手赐教。小弟先谢谢了。

解决方案 »

  1.   

    建议采用FormatDateTime('YYYY-MM-DD',Date);转换日期格式
      

  2.   

    试试:
    sqlstr:='select * from rsda where drsj<=:d1 and drsj>=d2';
    .....
    with adoquery1 do
    begin
    close;
    clear;
    sql.add(sqlstr);
    ParamByName('d1').AsDate:=DateTimePicker2.Date;
    ParamByName('d2').AsDate:=DateTimePicker1.Date;
    open;
    end;
      

  3.   

    把datetimepicker的Time属性设为0:00:00再试试!
      

  4.   

    这与你科使用的具体的数据库系统有关
    如果在access中
    with adoquery1 do
    begin
    str:='select * from 表名 where datatime>=#'+datatimetostr(datatimepicker.data)+'#';
    close;
    sql.clear;
    sql.add(str);
    open
    end;
      

  5.   

    你可以先在你所使用的数据库系统中检验一下你的sql语句,再把它放在delphi中来!
      

  6.   

    sqlstr:='select * from rsda where drsj<='+''''+datetostr(datetimepicker2.datetime)+''''+' and drsj>='+''''+datetostr(datetimepicker1.datetime)+'''';
    .....
    如果 字段 drsj 为字符型,这里没错我觉得楼上几位说的都是一些应该注意的地方,谢谢
      

  7.   


    with adoquery1 do
    begin
       close;
       sql.Text:='select * from rsda where drsj<=:d1 and drsj>=d2';
       ParaMeters.ParamByName('d1').value:=DateTimePicker2.Date;
       ParaMeters.ParamByName('d2').value:=DateTimePicker1.Date;
       open;
    end;
      

  8.   

    同意 wjlsmail(计算机质子)
        如果你的日期字段为字符型的话,只要定义其格式为“YYYYMMDD”就可以了,可以采用你贴出来的代码;
        但是,如果是DATETIME类型的话,建议还是用传参数的方法,就可以不考虑格式问题了。
      

  9.   

    sql.Add('select * from rsda where drsj between #'+formatdatetime('mm/dd/yyyy',datetimepicker1.DateTime)+'# and #'+formatdatetime('mm/dd/yyyy',datetimepicker2.DateTime)+'#');