在sql语句中,日期比较
sql.add('Operates.createtime>='+datetostr(startdate.date) +'  and  'Operates.createtime<='+datetostr(EndDate.date)+')';
其中Operates.createtime是纪录表中的日期型,startdate.date和EndDate.date是日期型控件的日期。现在把纪录表中的日期型和日期型控件的日期进行比较。
现在的问题是必须如何把上面的语句变得可用,而不存在类型不匹配的错误
因为Operates.createtime是日期型,而startdate.date,EndDate.date必须转为
字符型才能在sql中用,thx

解决方案 »

  1.   

    sql.add('Operates.createtime>='''+datetostr(startdate.date)+'''');
    sql.add('and Operates.createtime<='''+datetostr(EndDate.date)+'''');
      

  2.   

    sql.add('Operates.createtime>='+''''+FormatDateTime('yyyy-mm-dd',startdate.date)+'''');
    sql.add(' and Operates.createtime<='+''''+FormatDateTime('yyyy-mm-dd',EndDate.date)+'''');
      

  3.   

    用参数
    sql.add('Operators.CreateTime>=:StartDate and Operator.CreateTime<=:EndDate');
    ADOQuery1.Prepared;
    ADOQuery1.Parameters.ParamByName('StartDate').Value:=StartDate.Date;
    ADOQuery1.Parameters.ParamByName('EndDate').Value:=EndDate.Date;
      

  4.   

    以上各位的思路是一致的。
    我是转化为字符来比较的,不过要把系统的日期时间格式该成YYYY-MM-DD HH:MM:SS 格式
      

  5.   

    在DELPHI的SQL语法中字符'是敏感的,
    你这样是得到类型就不对了,
    你可以用TOMWLD(笑天)或 sysu(死树)的方法
    最好还是用参数