利用两个DateTimePicker 如何查询具体的时间,其中DateTimePicker1 的kind为 dtkDate,DateTimePicker2 的kind为dtkTime,我的sqlserver数据库有表T1,其中有caozuoriqi字段为DateTime类型,为什么我在两个控件中已经选好了2008-09-01 与 18:27:29,数据库中也存在caozuoriqi为 2008-09-01 18:27:29的记录可就是查不出来,怎么办,是什么原因?我想如果能查出,就可以统计时间精确到时分秒的包括日期与时间的精确范围!with  ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select id,caozuoriqi from y_liushui where caozuoriqi=:caozuoriqi');
Parameters.ParamByName('caozuoriqi').Value :=Datetimepicker1.datetime+Datetimepicker2.datetime;
showmessage(Datetimetostr(Datetimepicker1.datetime+Datetimepicker1.datetime));
Open;

解决方案 »

  1.   

    试试
    Parameters.ParamByName('caozuoriqi').Value :=trunc(Datetimepicker1.datetime)+frac(Datetimepicker2.datetime);
      

  2.   

    试着赋个变量,转换一下:
    把时间赋给个变量DATE1,
    DATE1:=FORMATDATETIME('YYYYMMDD',DATETIMEPICKER1.Date)+FORMATDATETIME('HH24MMSS',DATETIMEPICKER2.Time);SQL语句里这样写:
    where TO_CHAR(caozuoriqi,''YYYYMMDDHH24MISS'')='''+DATE1+'''
      

  3.   


    DATE1:=FORMATDATETIME('YYYYMMDD',DATETIMEPICKER1.Date)+FORMATDATETIME('HH24MMSS',DATETIMEPICKER2.Time); 
    同意這種方法.
      

  4.   

    完整代码怎么写?用3楼的方法怎么通不过,提示没有声明DATE1
      

  5.   

    var sTime,strSql : string;
    begin
      //基本的控件功能
      datetimepicker1.Time := DateTimePicker2.Time;
      sTime := FormatDateTime('yyyy-MM-dd hh:mm:ss',DateTimePicker1.DateTime);
      strSql := 'select id,caozuoriqi from y_liushui where caozuoriqi = ' + Quotedstr(sTime); 
      with  ADOQuery1 do
      begin
        Close;
        SQL.Clear;    
        SQL.Add(strSql);
        Open;
      end;
    end;
      

  6.   

    with  ADOQuery1 do
    begin  Close;  SQL.Clear;  SQL.Add('select id,caozuoriqi from y_liushui where caozuoriqi=:caozuoriqi');  Parameters.ParamByName('caozuoriqi').Value :=Datetimepicker1.datetime+Datetimepicker2.datetime;  //.asdatetime:=strtodatetime( formatdatetime('yyyy-mm-dd',dtp1.datetime)+' '+formatdatetime('hh:mm:ss',dtp2.datetime));  showmessage(Datetimetostr(Datetimepicker1.datetime+Datetimepicker1.datetime));Open;
    end;
      

  7.   

    噢,搞错了,应该是
    //.value:=strtodatetime( formatdatetime('yyyy-mm-dd',dtp1.datetime)+' '+formatdatetime('hh:mm:ss',dtp2.datetime));
      

  8.   

    楼上的各位,用你们的方法根本都查不出来,你们没试过吗?caozuoriq 是 DateTime 类型的
      

  9.   


    怎么就不行了呢,我代码里一直就是这样用的啊 FORMATDATETIME
      

  10.   

    按照3楼的方法试了,运行怎么提示我TO_CHAR 不是可以识别的函数名。
    代码如下:procedure TForm1.Button1Click(Sender: TObject);
    var
    DATE1:STRING;
    beginwith  adoquery1 do
    begin
    Close;
    SQL.Clear;
    SQL.Add('select id,caozuoriqi from y_liushui where TO_CHAR(caozuoriqi,''YYYYMMDDHH24MISS'')='''+DATE1+'''');
    DATE1:=FORMATDATETIME('YYYYMMDD',DATETIMEPICKER1.Date)+FORMATDATETIME('HH24MMSS',DATETIMEPICKER2.Time);
    Open;
    end;end;
      

  11.   

    你赋值的地方写反了,私信发你邮箱了 你去看看。。
    你这样写 试试。。
    DATE1:=FORMATDATETIME('YYYYMMDD',DATETIMEPICKER1.Date)+FORMATDATETIME('HH24MMSS',DATETIMEPICKER2.Time); SQL.Add('select id,TO_CHAR(caozuoriqi,''YYYYMMDD HH24:MI:SS'') as caozuoriqi from y_liushui where TO_CHAR(caozuoriqi,''YYYYMMDDHH24MISS'')='''+DATE1+'''');