首先,祝大家仲秋愉快;然后,问一个关于sql查询日期型的问题(20分)

  • 主题发起人 主题发起人 smale
  • 开始时间 开始时间
S

smale

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
前面已经有许多sql查询数据库日期型字段的例子,但没怎么看明白,我用的是ado+access
我写的如下:
adoquery1.active:=false;
adoquery1.sql.add('select * from 表 where 日期字段>=datetostr(datetimepicker1.date) and
日期字段<=datetostr(datetimepicker2.date));
adoquery1.active:=true;
为什么此语句通不过,还请各位赐教,请详细写出,谢谢!
 
'select * from 表 where 日期字段>=#'+datetostr(datetimepicker1.date)+'# and
日期字段<=#'+datetostr(datetimepicker2.date)+'#;'
 
同意 楼上.

要 变一下. 才可以.

你那么写, 不太对.
 
我也是过遇到这种问题。好像#呢种用法也不行,你先要搞清楚你的日期字段是date还是time,还是
datetime型。呢个很有关系。建议用长时间型。然后在进行比较。
 
我认为用参数还是比较好点,就像这样:
adoquery1.active:=false;
adoquery1.sql.add('select * from 表 where 日期字段>=:参数1 and
日期字段<=参数2;
adoquery1.active:=true;
肯定可以的,我相信你一定会成功的!!
 
shuaixin0311
后边再怎么写那,参数是怎么定义的?
 
parambyname('参数1').Value:=datetimepicker1;
parambyname('参数2').Value:=datetimepicker2;
 
以上方法都试了,还是行不通,请各位再帮忙想想办法!急!
 
adoquery1.active:=false;
adoquery1.sql.add('select * from 表 where 日期字段>=:参数1 and
日期字段<=参数2);
adoquery1.paramers.parambyname('参数1').Value:=datetimepicker1.date;
adoquery1.paramers.parambyname('参数2').Value:=datetimepicker2.date;
adoquery1.active:=true;

也是行不通!不是我语句写错了吧!
 
'#'是一定要加的,adoquery1.sql.clear最好是要用的.....
 
boye
请说的详细点,最好能举例子看看,谢谢!
 
没有人能够回答吗,我要急死了,还有更好的办法没有!
 
adoquery1.active:=false;
adoquery1.sql.Clear;
adoquery1.sql.add('select * from 订单 where 到货日期>=:DT1 and [发货日期]<=:DT2');
adoquery1.Parameters.parambyname('DT1').Value:=datetostr(datetimepicker1.date);
adoquery1.parameters.parambyname('DT2').Value:=datetostr(datetimepicker2.date);
adoquery1.Prepared;
adoquery1.active:=true;

"c:/Program Files/Microsoft Office/Office/Samples/Northwind"
 
var SqlStr:string;
begin
SqlStr := 'select * from 表名 where (日期字段 >=#'+ datetimepicker1.Text+'#) and (日期字段<=#'+ datetimepicker1.Text+'#)';
with ADOQuery1 do
begin
Active := False;
Sql.Clear;
Sql.Add(SqlStr);
Active := True;
end;
end;

 
adoquery1.Close ;
adoquery1.sql.Clear;
adoquery1.sql.add('select * from 表 where 日期字段>=:DT1 and 日期字段<=:DT2');
adoquery1.Parameters.Clear;
adoquery1.Parameters.Add;
adoquery1.Parameters[0].DataType:=ftdate;
adoquery1.Parameters[0].Value:=datetimepicker1.date;
adoquery1.Parameters.Add;
adoquery1.Parameters[1].DataType:=ftdate;
adoquery1.Parameters[1].Value:=datetimepicker2.date;
adoquery1.open;

 
adoquery1.Close ;
adoquery1.sql.Clear;
adoquery1.sql.add('select * from 表 where 日期字段>=:DT1 and 日期字段<=:DT2');
adoquery1.Parameters.('DT1').AsDatetime:=datetimepicker1.date;
adoquery1.Parameters.('DT2').AsDatetime:=datetimepicker2.date;

 
我认为用参数还是比较好点!!!
 
我也是认为用参数好,减少了delphi许多不稳定的因素,
在用date时会遇到时查到查不到的问题
 
adoquery1.active:=false;
adoquery1.sql.Clear;
adoquery1.sql.add('select * from 表 where 日期字段>='+floattostr(datetimepicker1.date)+' and
日期字段<='+floattostr(datetimepicker2.date)+'');
adoquery1.active:=true;
 
后退
顶部