我要查询时间在某个范围内的记录,老是提示类型不匹配,
我的查询语句是这么写的,
   SQLStr:='Select bill_id,bill_date from bill where bill_state=0';
   SQLStr:=SQLStr+' and bill_date>='''+DateToStr(i_start_date.date)+' and bill_date<='''+DateToStr(i_end_date.date)+'''';
   Q_search.text:=SQLStr;
   Q_search.open;
其中i_start_date和i_end_date是两个DateTimePicker控件,

解决方案 »

  1.   

    把DateToStr(i_start_date.date)换为formatdatetime('mm/dd/yyyy',i_start_date.date)
    DateToStr(i_end_date.date)一样换
      

  2.   

    不是吧!我数据库中的数据是以2003-3-3形式存放的,正好跟DateToStr(i_end_date.date)的形式一样,
      

  3.   

    存放格式与查询格式是两码事。试试
    把DateToStr(i_start_date.date)换为formatdatetime('mm/dd/yyyy',i_start_date.date)
    DateToStr(i_end_date.date)一样换
      

  4.   

    SQLStr:=SQLStr+' and bill_date>='''+DateToStr(i_start_date.date)+' and bill_date<='''+DateToStr(i_end_date.date)+'''';错了。
    SQLStr:=SQLStr+' and bill_date>='''+DateToStr(i_start_date.date)+''' and bill_date<='''+DateToStr(i_end_date.date)+''''
      

  5.   

    我遇到过这样的问题,当时解决的办法是分开来写,就没有问题了
    var l_i_start_date,l_i_end_date:string;
    .....
    l_i_start_date:=datetostr(i_start_date.date);
    l_i_end_date:=DateToStr(i_end_date.date);
    sqlstr:=SQLStr+' and bill_date>='''+l_i_start_date+' and bill_date<='''+l_i_end_date+'''';
      

  6.   

    数据库是什么?
    如果是access应该:
    SQLStr:='Select bill_id,bill_date from bill where bill_state=0';
       SQLStr:=SQLStr+' and bill_date>=#'+DateToStr(i_start_date.date)+'# and bill_date<=#'+DateToStr(i_end_date.date)+'#';
       Q_search.text:=SQLStr;
       Q_search.open;
    如果sql server
    SQLStr:='Select bill_id,bill_date from bill where bill_state=0';
       SQLStr:=SQLStr+' and bill_date>='''+DateToStr(i_start_date.date)+''' and bill_date<='''+DateToStr(i_end_date.date)+'''';
       Q_search.text:=SQLStr;
       Q_search.open;
      

  7.   

    多谢lincanwen(密码错误),那如果是设置ADOTable的Filter属性呢?(Access数据库)
      

  8.   

    要用##分开Sql := '字段 between ' + '#' + datetostr(msk_kprq_from.datetime)+ '#' + ' and '  + '#' + datetostr(msk_kprq_to.datetime) + '# ' ;我也碰到这个问题,搞了好久才出来!!!如果用>=或<=的话,数据可能不对。理论上<,>应该对。只是我在实践中就是不对。kao,
      

  9.   

    ADOQ1.Close;
      ADOQ1.SQL.Clear;
       ADOQ1.SQL.add('Select bill_id,bill_date from bill where (bill_state=0) and     (bill_date>=:date1)and(bill_date <=:date2)');
        ADOQ1.Parameters.ParamValues['date1']:='#'+datestr1+'#';
      ADOQ1.Parameters.ParamValues['date2']:='#'+datestr2+'#';
         ADOQ1.Open;
    adoq1是一个查询组件