回 帖 发 新 帖 刷新版面

主题:[原创]求助:日期查询查询不出来???

我的查询语句是这样的:
ADOQuery3.SQL.Add('select 仪器编号,分类号,领用单位号,仪器名称,型号,购置日期,领用单位,规格,厂家,出厂号,出厂日期,单价,经费科目,国别,使用方向,现状,领用人 from infor where ' + ComboBox1.Text + ' like ''' + '%'+ Edit18.Text + '%' + '''');
  
   说明:ComboBox1中选择要查询的项(仪器编号,分类号,领用单位号,仪器名称,型号,购置日期.......),Edit18中输入要查询的条件。

   数据库中的“购置日期”,“出厂日期类型”为:datatime.

   日期查询时没有正确查询出来,即没有找到任何记录,也没有提示出错!。如果只输入年,就可以查询出来!我也不知道是什么原因。

   还有我将语句改成:
    ADOQuery3.SQL.Add('select 仪器编号,分类号,领用单位号,仪器名称,型号,convert(varchar(10),购置日期,23),领用单位,规格,厂家,出厂号,convert(varchar(10),出厂日期,23),单价,经费科目,国别,使用方向,现状,领用人 from infor where ' + ComboBox1.Text + ' like ''' + '%'+ Edit18.Text + '%' + '''');
  也查找不出来,我上网找资料说convert是可以转换的,可是我的语句就是不得,好郁闷哦!

希望高手多多指点,如果语句不正确希望高手帮忙改正,谢谢了!

回复列表 (共2个回复)

沙发

like应该是模糊查询

自己写过另一个查询吧:
with adoquery2 do begin
  Close;
  SQL.Clear;
  SQL.Add('select * from 销售表 where dt>=:startrq and dt<=:endrq');
  Parameters.ParamByName('startrq').Value:=formatdatetime('yyyy-mm-dd',form1.DateTimePicker1.Date);
  Parameters.ParamByName('endrq').Value:=formatdatetime('yyyy-mm-dd',form1.DateTimePicker2.Date);
  Open;
end;



另一种方法:
procedure GetSql(SQL:TStrings;FieldName:String;dFrom,dTo:TDateTime);
>>>>begin
>>>>>>SQL.Add(Format('%s BETWEEN #%s# AND #%s#',[FieldName,
>>>>>>FormatDateTime('YYYY-MM-DD',dFrom),FormatDateTime('YYYY-MM-DD',dTo)]));
>>>>end;
参考这个sql的生成函数

板凳

你库里的字段是datetime类型的,
注意此类型是带有时间的就是time的。
所以查询的时候要用Datediff函数

我来回复

您尚未登录,请登录后再回复。点此登录或注册