我用了两个datetimepicker控件来设定时间段进行数据库查询,可始终就是结果为空,怪事,情高手帮助!由于我已经没有分给了,可是还有很多问题,请高手们见谅!
datamodule1.ADOQuery1.Close;
datamodule1.ADOQuery1.SQL.Clear;
firsttime:=datetostr(datetimepicker1.date)+' 00:00:00';
endtime:=datetostr(datetimepicker2.date)+' 23:59:59';
datamodule1.ADOQuery1.SQL.Add('select time from 数据库 where ((time>=:firsttime) and (time<=:endtime))');
datamodule1.ADOQuery1.Open ;
数据库中time字段我用了文本类型,这样好比较一些!统一都是年月日加具体时间的格式.
datamodule1.ADOQuery1.Close;
datamodule1.ADOQuery1.SQL.Clear;
firsttime:=datetostr(datetimepicker1.date)+' 00:00:00';
endtime:=datetostr(datetimepicker2.date)+' 23:59:59';
datamodule1.ADOQuery1.SQL.Add('select time from 数据库 where ((time>=:firsttime) and (time<=:endtime))');
datamodule1.ADOQuery1.Open ;
数据库中time字段我用了文本类型,这样好比较一些!统一都是年月日加具体时间的格式.
time在SQL SERVER里好象是关键字.datamodule1.ADOQuery1.SQL.Add('select [time] from 数据库 where (([time]>=:firsttime) and ([time]<=:endtime))');加上[],就可以迴避关键字的限制.
...
var
firstTime, endTime: TDateTiem;
begin
datamodule1.ADOQuery1.Close;
datamodule1.ADOQuery1.SQL.Clear;
firsttime:=datetimepicker1.DateTime;
endtime:=datetimepicker2.DateTime;
datamodule1.ADOQuery1.SQL.Add('select time from 数据库 where ((time>=:firsttime) and (time<=:endtime))');
datamodule1.ADOQuery1.parambyname('firsttime').asdatetime := firsttime;
datamodule1.ADOQuery1.parambyname('endtime').asdatetime := endtime;
datamodule1.ADOQuery1.Open ;...
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 数据库 where (time between :firsttime and :endtime)');
ADOQuery1.parambyname('firsttime').asdatetime := datetimepicker1.DateTime;
ADOQuery1.parambyname('endtime').asdatetime := datetimepicker2.DateTime;
ADOQuery1.Prepare;
ADOQuery1.Open;SQL 语句中的变量不能与外部变量冲突
参数SQL帮助里有,你可以试一下,我是一直是这样使用的.firsttime和endtime也需和前面的格式一致select time from 数据库 where ((convert(char(6),time,112)>=firsttime) and (convert((char(6),time,112)<=endtime))
With ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select * from 数据库 where (riqi>:firsttime) and (riqi<:endtime)');
parameters.parambyname('firsttime').value:= FormatDatetime('2003-04-19',datetimepicker1.Date);
parameters.parambyname('endtime').value := FormatDatetime('2003-05-06',datetimepicker1.Date);
active :=true;
ADOQuery1.Open;end;//你可以在加上你需要的具体时间比较 ,小时、分、秒