我用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;
为何如果查询日期段包含一些无记录的日期,就查询不出来结果.或查询出的结果有误.
请问关于日期条件的查询有什么好方法 ?急等
用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;
为何如果查询日期段包含一些无记录的日期,就查询不出来结果.或查询出的结果有误.
请问关于日期条件的查询有什么好方法 ?急等
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;
如:
between #2005-3-12# and #2005-4-12#
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;