有一时间变量
date1:Tdatetime
已赋值
有一个select语句,
adoquery1.sql.add('select * from a where formatdatetime('yyyy-mm',inputdate)=:m1 ');
adoquery1.Parameters.ParamByName('m1').Value:=formatdatetime('yyyy-mm',date1);
屡屡出错!不知为什么?

解决方案 »

  1.   

    如果你实在搞不清的话,用参数好了
    AdoQuery1.SQL.Add('select * from a where 日期=:xDate');
    AdoQuery1.Parameters[0].Value:=值;
    AdoQuery1.Open;
      

  2.   

    var
      s:string;
    begin
      s:=copy(inputdate,1,7);//这样就可以取到你所输入的年月
    end;
      

  3.   

    adoquery1.sql.add('select * from a where inputdate)=:m1 ');
    adoquery1.Parameters.ParamByName('m1').Value:=formatdatetime('yyyy-mm',date1);
      

  4.   

    关键我只要比教年和月,把年月相等的给select出来。
      

  5.   

    uses DateUtils;SQL.Text:='SELECT * FROM A WHERE (inputdate>=:m1) AND (inputdate<:m2)';
    d1:=RecodeTime(RecodeDay(Date1,1),0,0,0,0);
    d2:=IncMonth(d1,1);
    Parameters.ParamByName('m1').Value:=d1;
    Parameters.ParamByName('m2').Value:=d2;
      

  6.   

    adoquery1.sql.add('select * from a where 日期=:m1 ');
    m1:=formatdatetime('yyyy-mm',inputdate);
      

  7.   

    同意hiflower(花) 
    formatdatetime函数是DELPHI的函数,
    不是ACCESS中支持的函数啊。
    当然会出错啊。
      

  8.   

    adoquery1.sql.add('select * from a where inputdate='''+datetostr(date1)+''' ')
      

  9.   

    sql中字段的年月是用year(field),month(field)取出来的;
      

  10.   

    可以简单的格式成字符串来比较啊;
    //这里不是说在DELPHI中是字符串,而是在SQL语句中;如:'select * from a where To_char(formatdatetime(''yyyy-mm'',inputdate),''yyyy-mm'')='''+formatdatetime('yyyy-mm',date1)+''';
      

  11.   

    可以直接转换啊!
    'select * from a where YEAR((inputdate)=:m1 ');
    ML可以填写啊?
    没有这么麻烦吧?
    楼上的大哥?