我从数据库里取得一个日期值,并把值赋值给日期变量 td1,类型是TDateTime,例如它的值是2006-11-5 ,然后我想从某个表格里面读取所有大于2006-11-5 7:00:00的数据,于是我这样处理td1,td1=FormatDateTime("yyyy-mm-dd 7:00:00",td1);
然后我代码里面的sql代码是这样写的:
ADOQuery2->SQL->Add("select * from TimeClk where CompnyID='"+calculateID+"' and iotime>#"+DateTimeToStr(td1)+"# order by iotime");
总是提示"不正常地定义参数对象",IOTime是日期字段来的,里面的数据都是  年-月-日 小时:分钟:秒 这样的格式,请问应该怎样处理td1这个日期变量才能达到搜索出大于指定日期早上7:00的记录?

解决方案 »

  1.   

    calculateID 是 AnsiString类型来的
      

  2.   

    我试过直接改为
      ADOQuery2->SQL->Add("select * from TimeClk where CompnyID='"+calculateID+"' and iotime>#2006-11-4 7:00# order by iotime");
    也是不行,一样提示不正常定义参数
      

  3.   

    //adoquery1;
      sql:='select * from tableneme from datefield>:temp';
      Params.ParamByName('date2').AsString:=formatdatetime('yyyy-mm-dd hh:nn:ss',strtodatetime('2006-11-5 7:00:00'));
      

  4.   

    //adoquery1;
      sql:='select * from tableneme from datefield>:temp';
      Params.ParamByName('temp').AsString:=formatdatetime('yyyy-mm-dd hh:nn:ss',strtodatetime('2006-11-5 7:00:00'));//试试看
      

  5.   

    //试一下
    ADOQuery2->SQL->Add("select * from TimeClk where CompnyID='"+calculateID+"' 
                        and iotime>cdate('2006-11-4 7:00') order by iotime");//用cdate函数
      

  6.   

    query1.SQL.Clear;
      query1.SQL.Add('select * from time1 where time>:time2');
      query1.Parameters[0].Value:=strtodatetime('2006-11-14 10:24:30');
      query1.Open;