数据查询中关于关于一个时间的问题!(100分)

  • 主题发起人 主题发起人 bianconeri
  • 开始时间 开始时间
B

bianconeri

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个客户交往记录表,里面有回访时间,项目编码等字段
现在我要查询回访时间与DATETIMEPICKER中选择的日期相同的记录,我先
s:=datetostr(datetimepicker1.date);
with adoquery1 do
begin
adoquery1.sql.clear;
sql.text:=(' select * from 交往记录表 where 回访时间=s order by 项目编码');

但是试运行的话会出现PARAMETER S HAS NO DEFAULT VALUE的错误信息。
请问该怎么改?
 
忘记说了,数据库是ACCESS的
我把回访时间字段改成文本型和日期型都不行。
比较奇怪S是个变量怎么会有缺省值?
 
如果是SQL库,你的SQL应该是
adoquery1.sql.clear;
adoquery1.sql.add(' select * from 交往记录表 where 回访时间='''+s+''' order by 项目编码');
如果是ACCESS,你的sql应该是
adoquery1.sql.clear;
adoquery1.sql.add(' select * from 交往记录表 where 回访时间=#'+s+'# order by 项目编码');
而且一般情况下,不要用=时间,因为数据库里时间是有精度的,最差也到分钟,日期就
更没准了,如SQL里面省略时间,则表示12:00AM,有几条数据能正好等于12:00
用between替换。
datetostr也少用,因为客户机器的时间设置五花八门,有长、中、短等等,这些日期套进
SQL里,数据库不一定认。改成:s:=formatdatetime('yyyy-mm-dd',datetimepicker1.date);
 
来晚了,楼上说的对。access数据库的日期是比较特别的
 
接受答案了。多谢j_shen2000的指点。
 
后退
顶部