Select * From TableName WHERE (帐单日期-年+'-'+帐单日期-月) Between
  '2002-1' and '2002-7'

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin   query1.Close;
       query1.SQL.Clear;
        query1.SQL.Add('select * from  表 where    (帐单日期-年+'-'+帐单日期-月)>=:b,and (帐单日期-年+'-'+帐单日期-月)<=:e');
       query1.ParamByName('b').AsString:=edit1.text;
       query1.ParamByName('e').AsString:=edit2.text;
    end;
    但我这样调试有错呀
      

  2.   

    query1.SQL.Add('select * from  表 where    (帐单日期-年+'-'+帐单日期-月)>=:b and (帐单日期-年+'-'+帐单日期-月)<=:e');
    //多了个','号!
      

  3.   

    query1.SQL.Add('select * from  表 where    (帐单日期-年+''-''+帐单日期-月)>=:b and (帐单日期-年+''-''+帐单日期-月)<=:e');
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin   query1.Close;
       query1.SQL.Clear;
        query1.SQL.Add('select * from  表 where    (帐单日期-年+"-"+帐单日期-月)>=:b,and (帐单日期-年+"-"+帐单日期-月)<=:e');
       query1.ParamByName('b').AsString:=edit1.text;
       query1.ParamByName('e').AsString:=edit2.text;
    end;
    sql里用双引号!
      

  5.   

    强烈关注    不知道楼主的这两个字段采用什么类型。
        如果是字符串类型的话,'10'  <  '7',所以建议将'7'改为'07';
        
        如果是整型的话, 不如改用以下方法:query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from 表 where (帐单日期-年 >= :StartYear and 帐单日期-月 >=:StartMonth) and (帐单日期-年 <= :EndYear and 帐单日期-月 <=:EndMonth');
    query1.ParamByName('StartYear').AsString:=  YearOf(edit1.text);
    query1.ParamByName('StartMonth').AsString:=  MonthOf(edit1.text);
    query1.ParamByName('EndYear').AsString:=  YearOf(edit2.text);
    query1.ParamByName('EndMonth').AsString:=  MonthOf(edit2.text);
    query1.Open ;
    另外,我想问一下,我试过这样写,为什么不行?
    Select * From TableName WHERE Convert(SmallDateTime, (帐单日期-年+'-'+帐单日期-月)) Between '2002-1-1' and '2002-7-1'