Query1.ParamByName('todate').AsDate:=StrToDate('2000-01-01');
TDateTime实际上是Float类型,所以可以直接加减。

解决方案 »

  1.   

    query1.sql.add('select  名称,规格,类别,单位,数量,价格,编号,附件  日期  from  ruku1.db'); 中, 把附件  日期改為 "附件  日期"試試
      

  2.   

    query1.sql.add('where  日期<='+'''2000-01-01'''); 
    query1.open; //或
    date1:='''2000-01-01';
    ...
    query1.sql.add('where  日期<='''+date1+''''); 
    query1.open; //日期可以以字符串形式录入,但一定要按日期格式,如用分隔符“-”
      

  3.   

    >query1.sql.add('select  名称,规格,类别,单位,数量,价格,编号,附件  日期  from  ruku1.db'); 
    “附件”和“日期”之间没有逗号,会被认为“日期”是“附件”的别名。Query1.ParamByName('todate').AsDate := EncodeDate(2000, 1,1);
      

  4.   

    我不明白,日期能够直接表示呀 2000-1-1,他又没加单引号
    如果加了单引号,才会用StrToDate
      

  5.   

    最好按照下面的写法,应该没有问题:
    try
        query1.close;
        query1.sql.clear;
        query1.sql.add('select  名称,规格,类别,单位,数量,价格,编号,附   件   日期  from  ruku1.db');
        query1.sql.add('where  日期<=:todate');
        query1.ParamByName('todate').asdate:=StrToDate('2000-1-1');
        query1.prepare;
        query1.open;
      except
        ;
      end;
      

  6.   

    非常感谢大家的帮助,我已经调试通过了,正确的如下::procedure TForm7.FormCreate(Sender: TObject);
    begin
    query1.close;
    query1.sql.clear;
    query1.sql.add('select 名称,规格,类别,单位,数量,价格,编号,附件 ,日期 from ruku1.db');
    query1.sql.add('where 日期<=:todate');
    query1.ParamByName('todate').asdate:=strtodate('2000-01-01') ;
    query1.prepare;
    query1.open;
    end;
    我还有一个问题就是我想用现在的时间减去表里的录入时间,请问如何读取表里的日期阿,最好有表达式,我将另外加分,非常感谢!
      

  7.   

    var  d:TDateTime; 
            i:Integer; 
    d:=Query1.FieldbyName('日期').AsDate; 
    i:=Trunc(Now)-Trunc(d);//这就是两个时间间隔的天数
    你为什么要开两个同样的贴子啊
      

  8.   

    Query1.ParamByName('todate').AsDate:='2000-01-01';