ADOQuery的时间参数问题,在线等...

Tspeng 2003-10-10 10:25:48
我用以下方法时,怎么总是查询不到数据
sql语句如下:
select * from table1
where scsj between To_date(to_char(:date1),'YYYY-MM-DD hh24:mi:ss')
and to_date(to_char(:date2),'YYYY-MM-DD hh24:mi:ss')

procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.Parameters.Items[0].Value:=DateTimeToStr(DateTimePicker1.DateTime);
adoquery1.Parameters.Items[1].Value:=DateTimeToStr(DateTimePicker2.DateTime);
adoquery1.Open;
end;

...全文
45 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
angle097113 2003-10-16
  • 打赏
  • 举报
回复
晕~~~~~~~~~~~~~~~~~
fairycys 2003-10-16
  • 打赏
  • 举报
回复
你试试这种方法
if adoquery1.prepared=false adoquery1.prepare
Northwindrocker 2003-10-14
  • 打赏
  • 举报
回复
dao ing ~~~~~~
Tspeng 2003-10-14
  • 打赏
  • 举报
回复
谢谢各位,我用的oracle数据库,问题已经解决,原来是DateTimePicker控件在作怪!
aiirii 2003-10-13
  • 打赏
  • 举报
回复
你连接的是什么数据库?
Tspeng 2003-10-13
  • 打赏
  • 举报
回复
这个问题仍然解决不了,各位大侠帮忙啊!
Tspeng 2003-10-10
  • 打赏
  • 举报
回复
如果按angle097113(深思不解)的作法,则sql语句应写成
select * from table1
where scsj 〉=:date1
AND scsj<=:date2
则会报数据类型不匹配的错,则还是要进行数据类型转换
adoquery1.Parameters.Items[0].Value:=DateTimePicker1.DateTime
adoquery1.Parameters.Items[1].Value:=DateTimePicker2.DateTime
lincanwen 2003-10-10
  • 打赏
  • 举报
回复
在 adoquery1.Open;的前面加上:
adoquery1.ParamCheck:=false;
或者直接设置adoquery1的ParamCheck属性为false;
huojiehai 2003-10-10
  • 打赏
  • 举报
回复
同意 angle097113(深思不解)
Tspeng 2003-10-10
  • 打赏
  • 举报
回复
sql语句为:
select * from table1
where
scsj between to_date(to_char(:date1),'YYYY-MM-DD hh24:mi:ss')
and to_date(to_char(:date2),'YYYY-MM-DD hh24:mi:ss')
Tspeng 2003-10-10
  • 打赏
  • 举报
回复
楼上的方法和上面的方法是一样的,在oralce中必须用函数to_date('datetime',format)来转换时间的。

但是如果直接对参数赋值则可以
adoquery1.Close;
adoquery1.Parameters.Items[0].Value:='2000-10-1 10:00:00';
adoquery1.Parameters.Items[1].Value:='2004-10-1 10:00:00';
adoquery1.Open;
angle097113 2003-10-10
  • 打赏
  • 举报
回复
为什么非要把时间来回的转化呢
直接比较时间的大小不好吗?
select * from table1
where scsj 〉=:To_date
AND scsj<=:to_date

adoquery1.Parameters.Items[0].Value:=DateTimePicker1.DateTime adoquery1.Parameters.Items[1].Value:=DateTimePicker2.DateTime
idilent 2003-10-10
  • 打赏
  • 举报
回复
把得到的sql放到dbms里面查询一下。能得到数据吗?
Tspeng 2003-10-10
  • 打赏
  • 举报
回复
这样写还是不行啊!!!
idilent 2003-10-10
  • 打赏
  • 举报
回复
把sql中的时间转化去掉,然后让
adoquery1.Parameters.Items[0].Value:=DateTimePicker1.DateTime;
试试看
Tspeng 2003-10-10
  • 打赏
  • 举报
回复
感谢 angle097113(深思不解) !
如果按照你的方法,那不就该动的用户的需求了吗?
angle097113 2003-10-10
  • 打赏
  • 举报
回复
select * from table1
where scsj 〉=:date1
AND scsj<=:date2
则会报数据类型不匹配的错,则还是要进行数据类型转换
adoquery1.Parameters.Items[0].Value:=DateTimePicker1.DateTime\\改成date
adoquery1.Parameters.Items[1].Value:=DateTimePicker2.DateTime\\改成date

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧