时间段查询问题,急,200分求救(200)

  • 主题发起人 主题发起人 rihua
  • 开始时间 开始时间
R

rihua

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库是mysql数据库,结构如下 列1:日期型date 列2:8位字符型time 列3:字符型a现在要查询时间段a的数据,我该怎么写,如何将日期型的date和字符型的time连在一起查询呢,查询某天某点到某天某点的数据。写了如下方法查不出数据ADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add('select * from cgq');ADOQuery1.SQL.Add('WHERE concat(`DATE`,`TIME`) between :time1 and :time2');adoquery1.parameters.paramByName('time1').value:=datetostr(datetimepicker1.date)+edit1.Text+':00:00';adoquery1.parameters.paramByName('time2').value:=datetostr(datetimepicker2.date)+edit2.Text+':00:00';adoquery1.open
 
你要先学会调试排查错误嘛!先把adoquery1.parameters.paramByName('time1').value:=datetostr(datetimepicker1.date)+edit1.Text+':00:00';adoquery1.parameters.paramByName('time2').value:=datetostr(datetimepicker2.date)+edit2.Text+':00:00';改为:adoquery1.parameters.paramByName('time1').value:='1900-1-1 0:00:00';adoquery1.parameters.paramByName('time2').value:='2009-12-31 23:59:59';看这样行不行,然后再分析哪里的问题。ps,我不熟悉my sql
 
我试过的用adoquery1.parameters.paramByName('time1').value:='1900-1-10:00:00';adoquery1.parameters.paramByName('time2').value:='2009-12-3123:59:59';可以查出正确结果日期和时间中还不能有空格,不然查出数据不对
 
用这个试一下:adoquery1.parameters.paramByName('time1').asString:=datetostr(datetimepicker1.date)+edit1.Text+' 00:00';adoquery1.parameters.paramByName('time2').asString:=datetostr(datetimepicker2.date)+edit2.Text+' 00:00';
 
不行的,编译出错
 
对DATE字段用CONVERT(VARCHAR(10),A,121)这样的格式转换,然后和字符的联起来看看.
 
用 formatdatetime() 试一下
 
oracle的查询代码,楼主可以参考一下SQL.Add('Where DEALDATE >= '''+formatdatetime('yyyy-mm-dd',dtp1.date)+'''');SQL.Add('and DEALDATE <= '''+formatdatetime('yyyy-mm-dd',dtp2.date)+'''');SQL.Add('and saletime >= ('''+FormatDateTime('YYYY-MM-DD HH:MM:SS',dtp3.Time)+''')');SQL.Add('and saletime <= ('''+FormatDateTime('YYYY-MM-DD HH:MM:SS',dtp4.Time)+''')');MY qq:69276582 delphi新手
 
数据库的查询语句先在数据库中执行成功了,再考虑放到delphi里去,别一上来就直接在delphi里写啊写,错都不知道错在哪了。 数据库查询忌讳把字段进行转换后再做比较,这是造成数据库执行效率低下的原因之一,可以参考楼上“秋日的枫”的oracle代码,把起止时间的字符串转换成数据库的字段格式才是正道。
 
同意如下看法:数据库的查询语句先在数据库中执行成功了,再考虑放到delphi里去,别一上来就直接在delphi里写啊写,错都不知道错在哪了。 数据库查询忌讳把字段进行转换后再做比较,这是造成数据库执行效率低下的原因之一,可以参考楼上“秋日的枫”的oracle代码,把起止时间的字符串转换成数据库的字段格式才是正道。
 
后退
顶部