你好,请问一下,我要做一个每天自动按条件查询sql数据库的delphi程序,我的查询字段testdate在数据表中定义的是datetime类型的,在delphi程序中查询条件starttime/endtime用string型的老报错,用strtodatetime()转换过来的tdatetime类型的作查询条件也报错,
我的sql语句如下:
starttime:='2003-1-8 0:0:0';
endtime:='2003-1-8 23:59:59';
strsql:='select * from serial where testdate>=:starttime and testdate<=:endtime';
sql.Add(strsql);
adoquery1.Parameters[0].value:=starttime;             
adoquery1.Parameters[1].value:=endtime;
这个startime和endtime我希望是程序运行的当前系统时间天数减1,即每天都把昨天的数据查出来。

解决方案 »

  1.   

    starttime:='2003-1-8 0:0:0';
    endtime:='2003-1-8 23:59:59';
    strsql:='select * from serial where testdate>=:'+quotedstr(starttime)+' and testdate<=: '+quotedstr(endtime);
    sql.Add(strsql);
    这样试试吧
      

  2.   

    EncodeDate+EncodeTime
    試試這兩個東西
      

  3.   

    starttime:=yesterday()    //2003-01-09 0:0:0
    endtime:=incday(yesterday(),1)//2003-01-10 0:0:
    adoquery1.close
    adoquery1.sql.clear
    adoquery1.sql.add('select * from serial where testdate>=starttime and testdate<=endtime');
      

  4.   

    with QueryName do
      begin
        close;
        sql.Clear;
        sql.Add('SELECT * FROM '+QTableName+' ');
        sql.Add('WHERE '+QField+'= :QParameters ');
        Parameters.ParamByName('QParameters').Value := StrToDate(DateToStr(Datetimepicker1.date));
      end;
    这是我一个查询函数,也用日前查询,没问题阿
      

  5.   

    没细看,这样不行吧
    starttime:='2003-1-8 0:0:0';
    endtime:='2003-1-8 23:59:59';改成这样试一试
    var
      starttime, endtime: TDateTime;
    .........................
      starttime := strtodatetime('2003-1-8 0:0:0');
      endtime := strtodatetime('2003-1-8 23:59:59');
    ..........................
      

  6.   

    直接用这个
    starttime:='2003-1-8 0:0:0';
    endtime:='2003-1-8 23:59:59';
    strsql:='select * from serial where testdate>='''+startime+''' and testdate<='''+endtime+''';
    sql.Add(strsql);
      

  7.   

    这样做吧,应该正确的:var
      starttime, endtime: TDateTime;begin
      starttime:= StrtoDatetime('2003-1-8 0:0:0');
      endtime := StrtoDatetime('2003-1-8 23:59:59');
      strsql:='select * from serial where testdate>=:starttime and testdate<=:endtime';
      sql.Add(strsql);
      adoquery1.Parameters[0].value:=starttime;             
      adoquery1.Parameters[1].value:=endtime;
    end;
      

  8.   

    哥们,这样写就可以了
    starttime:='2003-1-8 0:0:0';
    endtime:='2003-1-8 23:59:59';
    strsql:='select * from serial where testdate>=:'''+starttime+''''+' and testdate<=:'''+endtime+'''';
    sql.Add(strsql);
      

  9.   

    改成
    starttime:=#39 + '2003-1-8 0:0:0' + #39;
    endtime:=#39 +'2003-1-8 23:59:59'+ #39;
    strsql:='select * from serial where testdate>=:starttime and testdate<=:endtime';
    sql.Add(strsql);
    adoquery1.Parameters[0].value:=starttime;             
    adoquery1.Parameters[1].value:=endtime;
    试试