我用Delphi+ACEESS写了一个程序,其中涉及到日期查询用法如下:
用Datetimepicker控件
with adoq do
 begin
 close;
 sql.add('select * from 销售');
 sql.add('where dt between :s1 and :s2');
 parameters.parambyname('s1').value:=datetostr(datetimepicker1.date);
 parameters.parambyname('s2').value:=datetostr(datetimepicker2.date);
 open;
 end;
为何如果查询日期段包含一些无记录的日期,就查询不出来结果.或查询出的结果有误.
请问关于日期条件的查询有什么好方法 ?急等

解决方案 »

  1.   

    with adoquery1 do begin
      Close;
      SQL.Clear;
      SQL.Add('select * from 销售 where dt>=:startrq and dt<=:endrq');
      Parameters.ParamByName('startrq').Value:=formatdatetime('yyyy-mm-dd',form1.DateTimePicker1.Date);
      Parameters.ParamByName('endrq').Value:=formatdatetime('yyyy-mm-dd',form1.DateTimePicker2.Date);
      Open;
    end;
      

  2.   

    ACCESS中日期SQL两头要用“#”号
    如:
    between #2005-3-12# and #2005-4-12#
      

  3.   

    case Combobox1.ItemIndex of
        1: sqlstr:='select * from cost where 通话日期 between #3-21#  and  #6-20#';
        2: sqlstr:='select * from cost where 通话日期 between #6-21#  and  #9-20#';
        3: sqlstr:='select * from cost where 通话日期 between #9-21#  and  #12-20#';
        end;
      

  4.   

    procedure GetSql(SQL:TStrings;FieldName:String;dFrom,dTo:TDateTime);  begin   SQL.Add(Format('%s BETWEEN #%s# AND #%s#',[FieldName,   FormatDateTime('YYYY-MM-DD',dFrom),FormatDateTime('YYYY-MM-DD',dTo)]));  end;参考这个sql的生成函数
      

  5.   

    gxgyj应该帮你解决好了吧?楼主,快速答复。结果?