数据库为sql serve我用adoquery 查询时间,可当在edit1内输入查询条件时,比如:当输入1999时,能进行模糊查询到时间日期内包含1999的记录。可当输入1999-1-1时,就返回一条空的记录。为什么?我的时间字段是datetime类型的。我的代码是:
procedure TFormfind.Button2Click(Sender: TObject);
var
  d1:string;
  d2:string;
begin
      if combobox1.text='合同日期' then
      begin
      adoqfind.close;
      adoqfind.sql.Clear;
      s1:=edit1.Text;
      s2:='select * from table where date like ''%'+s1+'%''';
      adoqfind.SQL.Add(s2);
      adoqfind.Open;
      end;
请各位大哥帮我改下select语句,怎么在edit1输入例如1999-1-1时能查出这天的记录呢?

解决方案 »

  1.   

    s2:='select * from table where date='''+s1+'''';
      

  2.   

    procedure TFormfind.Button2Click(Sender: TObject);
    var
      d1:string;
      d2:string;
    begin
          if combobox1.text='合同日期' then
          begin
          adoqfind.close;
          adoqfind.sql.Clear;
          s1:=edit1.Text;
          s2:='select * from table where DATEDIFF(Day,Date,'''+Trim(s1)+''')';
          adoqfind.SQL.Add(s2);
          adoqfind.Open;
          end;
      

  3.   

    procedure TFormfind.Button2Click(Sender: TObject);
    var
      d1:string;
      d2:string;
    begin
          if combobox1.text='合同日期' then
          begin
          adoqfind.close;
          adoqfind.sql.Clear;
          s1:=edit1.Text;
          s2:='select * from table where DATEDIFF(Day,Date,'''+Trim(s1)+''')=0';
          adoqfind.SQL.Add(s2);
          adoqfind.Open;
          end;