下面的代码哪里错了, 如datetimepicker3 我选24号, datetimepicker4选25号 查询结果只有25号的数据,
                    当datetimepicker3 我选23号, datetimepicker4选25号 查询结果只有24,25号的数据,是不是日期精确到小时的问题
                    
procedure TForm2.BitBtn4Click(Sender: TObject);
var
sqll:string;
begin
sqll := 'select * from sample where 申请日期 >= '+
         QuotedStr(DateTimeToStr(datetimepicker3.date)) +
        ' and 申请日期 <= ' + QuotedStr(DateTimeToStr(datetimepicker4.date));  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add(sqll);
  adoquery1.Open;
end;

解决方案 »

  1.   

    BETWEEN 日期1 and 日期2
      

  2.   

    BETWEEN 日期1 and 日期2+ ' 23:59:59.999'orBETWEEN 日期1 and 日期2+1天
      

  3.   

    日期的时间要设定,Tdatetimepicker的datetime是包含时间的,把起始日期的Tdatetimepicker的Time设为00:00:00,把结束日期的Tdatetimepicker的Time设为23:59:59
      

  4.   

    直接看查询语句最明白了
    把时间带上吧,设置好默认时间,取datetimepicker3.datetime
      

  5.   

    后台sql 查询是这样的 2010-12-25 00:00:00.000
      

  6.   

    因为DELPHI的 时间控件 与SQL的时间 如果只显示日期的话 会有分秒的差异。
    你跟踪就知道了
      

  7.   

    var Date1,Date2:TDate;
        sqll:string;
    begin
      DateTimetoString(Date1,'yyyy-mm-dd',datetimepicker3.date);
      DateTimetoString(Date2,'yyyy-mm-dd',datetimepicker4.date);
      sqll := 'select * from sample where 申请日期 >= '+
               +#39+Date1+#39+
               ' and 申请日期<='+
               +#39+Date2+#39;
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add(sqll);
      adoquery1.Open;
    end;
      

  8.   

    出现[Error] main.pas(351): There is no overloaded version of 'DateTimeToString' that can be called with these arguments
      

  9.   

    BETWEEN 日期1 00:00:01 and 日期2 23:59:59