我的sqlserver数据库内容:2002-10-16 00:00:0000
现在我要查询大于2002-10-16的内容,并且少于2002-10-20,我用的是datepickerk控件选取时间,提交到数据库的是用date函数,那位兄弟可以帮忙?

解决方案 »

  1.   

    用参数
    select * from xxx where tdate<=:tstartdate and tdate>=:tenddate将parameters.parambyname('tstartdate').value :=dtp.date
    ...就可以搞定
      

  2.   

    关键是sqlserver数据库自动加上了时间,我提供的参数只有日期
      

  3.   

    使用 encodetime()
    将时间 组合成  dd-tt-mm-ss
    再用softer(softer)兄  的方法
      

  4.   

    select * from xxx where tdate<=:tstartdate and tdate>=:tenddate
    parameters.parambyname('tstartdate').AsDateTime:=dtp.date
      

  5.   

    在数据库中对日期参数的传入处理,用字符串是最好的方式。
    你在SQL_SERVER里把参数定义为字符串型(char(10)),
    记住:Between...And...对字符串同样适用。
    然后你在前台传时传入:
    FormatDateTime('YYYY-MM-DD',[日期类型数据]);
    即可。
      

  6.   

    修改一下就可以用!!!!if RadioButton1.Checked=true then
         begin
           with datamodule1.JhdADOQuery do
             begin
               close;
               sql.Clear;
               sql.Add('select * from 进货表 where 进货日期>='+''''+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker1.datetime)+''''+' and 进货日期<='+''''+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker2.datetime)+'''');
               open;
             end;
          end;
      

  7.   

    涉及到时间的都有这样的问题,再datepicker得到的时间系统会自动把后面的hh:mm:nn加上,得到的:2000-2-2 00:00:00,所以如果你要查询〉=2002- 10-6 and <2002-10-26的内容,只需要:where registerdate>= :vbegindate and registerdate<=:venddate
    Parameters.ParameterbyName('vbegindate').value:= datepicker1.date;
    Parameters.parameterbyname('venddate').value:= datepicker2.date+1;
    open;
    自己试一试!
      

  8.   

    对不起,上面的sql写得有些错误修改如下:涉及到时间的都有这样的问题,再datepicker得到的时间系统会自动把后面的hh:mm:nn加上,得到的:2000-2-2 00:00:00,所以如果你要查询〉=2002- 10-6 and <2002-10-26的内容,只需要:where registerdate>= :vbegindate and registerdate<:venddate
    Parameters.ParameterbyName('vbegindate').value:= datepicker1.date;
    Parameters.parameterbyname('venddate').value:= datepicker2.date+1;
    open;
    自己试一试!
      

  9.   

    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from debit_imp where date between :d1 and :d2');
    query1.ParamByName('d1').AsDate:=d1.Date;
    query1.ParamByName('d2').AsDate:=d2.Date;
    query1.Open;
      

  10.   

    同意andy_lim(andy)
    绝对可行
      

  11.   

    很简单,用int函数将时间去掉就行,只留下日期。query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from debit_imp where date>:d1 and date<:d2');
    query1.ParamByName('d1').AsDate:=int(d1.Date);
    query1.ParamByName('d2').AsDate:=int(d2.Date);
    query1.Open;