用两个datetimepicker组件 定义查询的开始时间和结束时间,我下面的语句,但是错误,应该怎样转换他们的类型  或怎样解决这个问题。
 datamodule1.SPHZQuery1.Close;
 datamodule1.SPHZQuery1.SQL.Clear;
 datamodule1.SPHZQuery1.SQL.Add('select * from sphz where rq   between '''+datetostr(datetimepicker1.date)+''' and  '''+datetostr(datetimepicker2.date)+'''');
 datamodule1.SPHZQuery1.Open;
 frm_slhz.Show;

解决方案 »

  1.   

    你哭里的日期字段是 字符型的?
    datamodule1.SPHZQuery1.SQL.Add('select * from sphz where rq   between
    >= '+''''+datetostr(datetimepicker1.date)+''''+' and between
    <= '+''''+datetostr(datetimepicker2.date)+'''');
      

  2.   

    你用datetostr(datetimepicker1.date)将datetimepicker1.date的数据转换为字符型,又用日期型的字段与之比较当然不对,可以
    select * from sphz where (rq>=:minrq) and (rq<=:maxrq)
    parabyname('maxrq').asdate:=datetimepicker2.date ;
    parabyname('minrq').asdate:=datetimepicker1.date ;
     
      

  3.   

    在ACCESS中日期是这样表示的:[1980-01-01]
      

  4.   

    要在Form的Active事件里加上一句
    ShortDateFormat:='yyyy-mm-dd'
    这样在程序里任何地方,用DateToStr都会返回'1980-01-01'的格式,
    然后才可以用于在SQL语句中的比较.
      

  5.   

    zywell1(网事如风) 
    你好 
    我用了你的那种方法,我用的控件是ADO 但是
    parabyname('maxrq').asdate:=datetimepicker2.date ;
    parabyname('minrq').asdate:=datetimepicker1.date ;
    中 .asdate没有定义的  怎么解决呢
      

  6.   

    我用的是Access数据库,用的rq字段是文本型的
    上面方法用了但是不行
      

  7.   

    MySQL:= 'Select * From %s where (%s%s#%s#) order by Class,sNO,%s';
    SQL.Add(Format(MySQL,[TBN,Condition,Sign,Request,Condition]));日期型字段注意:# #
      

  8.   

    adoquery的参数不是这样赋值的 你可以
    parameters.ParamByname('maxrq').Value :=datetimepicker2.date ;
      

  9.   

    parameters.ParamByname('maxrq').Value :=datetimepicker2.date ;
    我按照这样的,但是运行时说 “参数不足,期待值是3” ?