请教一个关于根据日期查询的问题! 我的数据显示是用DBGrid显示的,连接是用adoquery,现在我添加了2个日期控件DateTimePicker1和DateTimePicker2,分别为开始时间和结束时间,我现在点查询按钮,我想数据表显示开始到结束之间的数据。现在的问题是,我数据库里的日期时间精确到了秒,2009-06-12 13:30:00.000这是数据库里存的时间,我现在不知道该怎么判断。查询代码该如何写?请大家帮帮我! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 从DateTimePicker1这里你要取的包括时间吗?还是只有日期?不论是时间还是日期都可以用FormatDateTime来格式化 FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date); FormatDateTime('YYYY-MM-DD HH:MM:SS',DateTimePicker1.DateTime);然后把格式化后的时间作为查询条件与数据库中的数据比较 正解楼主可以根据自己的需求用FormatDateTime格式化,格式化出来的是字符形式,不是日期格式. where date >= :BegDate and date < dateadd(dd,1,:EndDate) where date >= :BegDate and date < dateadd(dd,1,:EndDate)SQL这样写,输入参数:ParamByName('BegDate').AsDateTime := dtpBegDate.Date;ParamByName('EndDate').AsDateTime := dtpEndDate.Date; strtodatetime(datetostr(DateTimePicker1.date)+' 00:00:00 ');strtodatetime(datetostr(DateTimePicker2.date)+' 23:59:59 '); 我这里提示undeclared identifier:'ParamByName'这个错误信息。这是我的代码。procedure Tddfform.btnInquClick(Sender: TObject);begin adoquery1.close; adoquery1.SQL.Clear; adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff'); adoquery1.sql.add('where llrq >= BegDate and llrq<=EndDate'); ParamByName('BegDate').AsDatetime := DateTimePicker1.date; ParamByName('EndDate').AsDatetime := DateTimePicker2.date; adoquery1.Openend; ParamByName('BegDate').AsDatetime := DateTimePicker1.date; ParamByName('EndDate').AsDatetime := DateTimePicker2.date; 改成adoquery1.parameters.ParamByName('BegDate').AsDatetime := DateTimePicker1.date; adoquery1.parameters.ParamByName('EndDate').AsDatetime := DateTimePicker2.date; 照你的改了之后。那错误提示没了。不过现在有了这个提示undeclared identifier:'AsDatetime' 麻烦您了! adoquery1.parameters.ParamByName('BegDate').AsDatetime := DateTimePicker1.date; adoquery1.parameters.ParamByName('EndDate').AsDatetime := DateTimePicker2.date; 请问这里面的BegDate和EndDate不需要声明吗? 知道的很简单:如何禁止UAC虚拟化(UAC Virtualization) 挺迷茫的 如何把一个DELPHI繁体工程转为简体 如何让窗体自动调整大小 请教关于QuickReport报表设计中TQRDBText控件显示的问题 如果宝蓝把戴妃卖给古狗 急:如何实现运行时拖动组件? 急!!!DBgrid中的某一条记录被选中的程序段应该怎么写啊? 高分求救!有关Delphi调用Lotus的数据库数据问题!! 哪里有install shield for delphi 5 下载 请教大家希望大家帮我解决下,谢谢! StringGrid 怎么知道 每行对应 StringGrid控件的高度
FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date);
FormatDateTime('YYYY-MM-DD HH:MM:SS',DateTimePicker1.DateTime);
然后把格式化后的时间作为查询条件与数据库中的数据比较
楼主可以根据自己的需求用FormatDateTime格式化,格式化出来的是字符形式,不是日期格式.
SQL这样写,输入参数:
ParamByName('BegDate').AsDateTime := dtpBegDate.Date;
ParamByName('EndDate').AsDateTime := dtpEndDate.Date;
strtodatetime(datetostr(DateTimePicker2.date)+' 23:59:59 ');
begin adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff');
adoquery1.sql.add('where llrq >= BegDate and llrq<=EndDate');
ParamByName('BegDate').AsDatetime := DateTimePicker1.date;
ParamByName('EndDate').AsDatetime := DateTimePicker2.date;
adoquery1.Open
end;
ParamByName('EndDate').AsDatetime := DateTimePicker2.date; 改成
adoquery1.parameters.ParamByName('BegDate').AsDatetime := DateTimePicker1.date;
adoquery1.parameters.ParamByName('EndDate').AsDatetime := DateTimePicker2.date;
照你的改了之后。那错误提示没了。不过现在有了这个提示undeclared identifier:'AsDatetime' 麻烦您了!
adoquery1.parameters.ParamByName('EndDate').AsDatetime := DateTimePicker2.date; 请问这里面的BegDate和EndDate不需要声明吗?