sql.Add('select * from Nation where Born_Date between ''''+'1998-5-19'+''''+' and '+''''+'1992-5-19'+'''');

解决方案 »

  1.   

    sql.Add('select * from Nation where convert(varchar(10),Born_Date,120) born_date between ''''+'1998-05-19'+''''+' and '+''''+'1992-05-19'+'''');
      

  2.   

    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('Select * from Nation where Born_Date between :ADate and :BDate');
      Query1.Params[0].AsDate = StrToInt('1998-5-19');
      Query1.Params[1].AsDate = StrToInt('1992-5-19');
      Query1.Prepare;
      Query1.Open;
    end; 
      

  3.   

    你可以试试以下的代码(数据库不一样使用的日期格式也不一样)var
     SQLText:String; 
    begin
      Query1.Close;
      Query1.SQL.Clear;
      //如果数据库为SQLServer
      SQLText:=Format('Select * From Nation where (Born_Date>=''%s'') '+
      ' AND (Born_Date<=''%s'') ',['1992-5-19','1998-5-19']);
      //如果数据库为Accesss
      SQLText:=Format('Select * From Nation where (Born_Date>=#%s#) '+
      ' AND (Born_Date<=#%s#)',['1992-5-19','1998-5-19']);
      Query1.SQL.Add(SQLText);
      Query1.Prepare;
      Query1.Open;
    end; 
      

  4.   

    Between A and B
    A必须小于B,否则就查询不出来
    你应该写成这样
    between 1992-5-19 and 1998-5-19');
      

  5.   

    colacoca(我是一瓶倒过来的可口可乐) 朋友:
    你所说的方法也试过的,找了来还是为空,我真不知道是哪儿出了问题。
    with query1 do
      begin
      close; sql.Clear;
      sql.Add('select Born_Date,sex from Nation where Born_Date between 1980-01-01 and 2000-12-31 GROUP BY Born_Date,sex');
      open;
      end;
      

  6.   

    不会是DBGrid之类的DateSource属性没有吧
      

  7.   

    楼上有人说的对,数据库不同,那么采用的SQL会有所差别的,如果是ORACLE,那么应该使用TO_DATE转化
    ex:csSQL := 'select * from Nation where Born_Date between TO_DATE(''1998-5-19'')and TO_DATE(''1992-5-19'')';
      

  8.   

    楼上的朋友是这样吧
    csSQL := 'select * from Nation where Born_Date between TO_DATE(''''1998-5-19'''')and TO_DATE(''''1992-5-19'''')';
      

  9.   

    首先看你的日期格式是什么样子的
    query1.close;
    query1;sql.clear;
    query1.SQL.Add('Select * from Nation where Born_Date between :ADate and :BDate');
    query1.Params[0].value:=strtodate('1992-5-19');
    query1.Params[2].value:=strtodate('1998-5-19');
    query1.open;
      

  10.   

    我用的access数据库,就是无论怎么查询,都是为空的。
      

  11.   

    select * from [客户服务信息]
    where [服务时间] between #1992-5-19# and #1998-5-19#
      

  12.   

    试一试:
    select * from Nation where Born_Date >'12/05/2002' and Born_Date <='16/05/2002'