大家好    我想知道这样的SQL怎么写?
  ssql:='select * from maindb.db where (jj<>''接入'' and ((rq like %'+formatdatetime('yyyymmdd',DateTimePicker1.Date)+'% ) or (:A0<=zzrq and :A0>=sfrq)) and (:B0<=sfsj))'+
                                   'or (jj=''接入'' and ((rq like %'+'formatdatetime(''yyyymmdd'',DateTimePicker1.Date-jjrq1)'+'% ) or ((:A0-jjrq1<=zzrq)and(:A0-jjrq1>=sfrq)))and (:B0<=jjsj))';query1.ParamByName('A0').AsDate:=DateTimePicker1.Date;
query1.ParamByName('B0').AsTime:=DateTimePicker1.Time;其中jj、 rq、zzrq、sfrq、jjss、jjrq1都是maindb.db的字段,A0是Query1的日期型参数在设计时添加到控件Params属性中、B0同上是时间型的 。我要实现(rq like %'+'formatdatetime(''yyyymmdd'',DateTimePicker1.Date-jjrq1)'+'% )的比较,难在不知道如何在Query1的SQL中使用formatdatetime函数,并且formatdatetime函数要用到字段jjrq1的值,实现格式化(DateTimePicker1.Date-字段jjrq1)的差您能告诉我怎么做到吗?当然实在不行我就修改数据库结构,把这个过程放到数据录入的步骤去做,可我很好奇,想知道Paradox能不能做到这一点。    祝大家春节快乐,丙戊年万事如意!                                      您的网友                                              来自大富翁的 幼虫2004

解决方案 »

  1.   

    改一下:
    ssql:='select * from maindb.db where (jj<>''接入'' and ((rq like ''%'+formatdatetime('yyyymmdd',DateTimePicker1.Date)+'% '') or (:A0<=zzrq and :A0>=sfrq)) and (:B0<=sfsj)) or (jj=''接入'' and ((rq like '' % Cast('+DatetimeToStr(DateTimePicker1.Date)+'-jjrq1) as varchar(20))% ) or ((:A0-jjrq1<=zzrq)and(:A0-jjrq1>=sfrq)))and (:B0<=jjsj))';
      

  2.   

    再改一下:
    ssql:='select * from maindb.db where (jj<>''接入'' and ((rq like ''%'+formatdatetime('yyyymmdd',DateTimePicker1.Date)+'% '') or (:A0<=zzrq and :A0>=sfrq)) and (:B0<=sfsj)) or (jj=''接入'' and ((rq like '' % Cast('+DatetimeToStr(DateTimePicker1.Date)+'-jjrq1) as varchar(20))% '') or ((:A0-jjrq1<=zzrq)and(:A0-jjrq1>=sfrq)))and (:B0<=jjsj))';
      

  3.   

    再请专家详解这句
    rq like '' 
    %Cast('+DatetimeToStr(DateTimePicker1.Date)+'-jjrq1) as varchar(20))% '')Cast是什么   ,  用法?
    Varchar是什么   ,  用法?他俩我在Paradox Sql帮助中没看到。
      

  4.   

    cast和convert都是SQL Server中有的类型转换函数,varchar也是SQL Server中的变长字符串数据类型
    不知道你的SQL中有没有这些