delphi 连Access写查询条件时,有日期时间字段,要查询到时间怎么写参数啊?
#2004-01-01#正确 #2004-01-01 10:20:20#就错了!为什么呢?该怎么写?

解决方案 »

  1.   

    咱也不知道为何
    只知道用参数形式不会出错
    sqlstr:='select * from tname where ttime:=d';
      

  2.   

    看看这段代码或许会给你些帮助(包含两种方法):
    procedure TSInsurBillForm.QueryBitBtnClick(Sender: TObject);
    var std1,std2:string;
    begin
      with DataM.InpBillADOQ do
      begin
        close;
        sql.Clear;
        sql.Add('select a.item_name,a.item_spec,a.amount,a.units,a.costs/a.amount,a.costs, ');
        sql.Add('b.drug_insur_type1||b.pay_pay1,a.billing_date_time ');
        sql.Add('from inp_bill_detail a,price_vs_insur b ');
        sql.Add('where a.item_code=b.item_code ');
        sql.Add('and a.patient_id='''+trim(IdEdit.Text)+''' ');
        sql.Add('and trunc(a.billing_date_time) >=:std1 ');
        sql.add('and trunc(a.billing_date_time) <=:std2 ');
        sql.Add('order by a.billing_date_time ');
        Parameters.ParamValues['std1']:=strToDateTime(DateToStr(BeginDateTimeP.Date)+' 00:00:00');
        Parameters.ParamValues['std2']:=StrToDateTime(DateToStr(EndDateTimeP.Date)+' 23:59:59');
        prepared;
        open;
        //////////////////////////////////////////////////////////////
        DataM.SumADOQ.Close;
        DataM.SumADOQ.SQL.Clear;
        std1 := datetostr(BeginDateTimeP.Date)+' 00:00:00'   ;
        std2 := datetostr(EndDateTimeP.Date)+' 23:59:59';
        DataM.SumADOQ.SQL.Add('select sum(costs)  from inp_bill_detail ');
        DataM.SumADOQ.sql.Add('where patient_id='+''''+trim(IdEdit.Text)+'''');
        DataM.SumADOQ.sql.Add(' and billing_date_time>='+ 'to_date('+''''+std1+''''+','+''''+'yyyy-mm-dd hh24:mi:ss'+''''+')');
        DataM.SumADOQ.sql.add(' and billing_date_time<='+ 'to_date('+''''+std2+''''+','+''''+'yyyy-mm-dd hh24:mi:ss'+''''+')');
        DataM.SumADOQ.open;
        Label10.Caption:=DataM.SumADOQ.Fields[0].AsString;
        DataM.SumADOQ.Close;
        //////////////////////////////////////////////////////////////
        if recordcount<1 then
          application.MessageBox('该病人在此时间段内没有发生费用!','系统提示',32);
          exit;
          close;
      end;
    end;
      

  3.   

    with ADOQuery1 do
      begin
        Close; 
        SQL.Text := 'select * from asd where aa =:aa ';
        Parameters.ParamByName('aa').Value := StrToDateTime('2004-8-24 16:38:10');
        Open;
      end;
      

  4.   

    delphi 连Access写查询条件时,有日期时间字段,要查询到时间怎么写参数啊?
    #2004-01-01#正确 #2004-01-01 10:20:20#就错了!为什么呢?该怎么写?
    ================================
    #2004-01-01#这个是针对日期的
    对于 #2004-01-01 10:20:20# 用'2004-01-01 10:20:20'才行