a:=DatetoStr(DateTimePicker2.Date);
  b:=DatetoStr(useDateTimeDTP.Datetime);
  c:=DatetoStr(DateTimePicker1.datetime);
  Flag:='0';
  sql:='select orderno, cartype, carnum, useunit, journey, cartotalprice, roadtotalprice, totalprice, balance, operator, operatordate, EstimateKM, realKM, memo from orderform ';
 
  if trim(cartypeEDT.Text)<>'' then
    begin
      sql:=sql+'where cartype='''+cartypeEdT.Text+''' and ';
      Flag:='1';
    end;
    //省略部份代码
  if Flag='1'  then
     sql:=sql+'operatordate = '''+a+''' and '
   else
    begin
      sql:=sql+'where operatordate = '''+a+''' and ';
      flag:='1';
    end;
  //省略部份代码
  if trim(operatorEDT.Text)='' then
    begin
    if flag='1' then
      sql:=Copy(sql,1,Length(sql)-4)
        end;
     
  mainform.ADOQuery1.Close;
  mainForm.ADOQuery1.SQL.Clear;
  mainForm.ADOQuery1.SQL.Add(sql);
  mainform.ADOQuery1.Open;问题 在两部份省略代码之间,因为operatordate在数据库中是日期类型,格式是yyyy-MM-dd HH:mm:ss
因为如果要用户输入时间分钟的话,会很麻烦 所以a:=DatetoStr(DateTimePicker2.Date); 我想省略operatordate的时、分,该如何做啊?

解决方案 »

  1.   


    a:=DatetoStr(DateTimePicker2.Date); 
    应该已经去掉了时、分的
    或者你不放心,可以试试:
    formatdatetime('yyyy-mm-dd ',DateTimePicker2.Date)
      

  2.   

    不知楼主的意思是不是让用户输入比如2004-9-6这样的日期来搜索数据库中精确到秒的日期,如果是的话把你的查找的sql语句改为:
    sql:=sql+'where CONVERT(char(10),operatordate, 20) = '''+a+'''
    把数据库中的日期精确到天就可以了
      

  3.   

    DateTimePicker2.Date 应该是没有分秒的!
      

  4.   

    DateTimePicker2.Date是没有分秒但数据数里的Operatordate 是有分秒的。。
    我想 drift1981(一包香烟,一把吉他,浪迹天涯!) 的方法应该可行。。我试试。。
      

  5.   

    好像不行啊请问CONVERT(char(10),operatordate, 20) 中的20的含义是什么?
    DateTimePicker2.Date的格式是Yyyy-mm-dd
      

  6.   

    20是 格式化类型 DATETIMEPICKER的DATE显示格式应该可以改变的,其实把上面两位的方法结合在一起就行了
    a=formatdatetime('yyyy.mm.dd ',DateTimePicker2.Date)sql:=sql+'where CONVERT(char(10),operatordate, 102) = '''+a+'''这个问题其实查一下SQL SERVER 2000 帮助就应该可以解决吧, 全中文的