select rbillEntry.FActualAmt as rbillEntry,
                 customer.FNumber as Fnumber,orgCompany.Fnumber as orgCompanyFnumber --实收金额 客户
            from T_CAS_ReceivingBillEntry rbillEntry --实收金额
            left join T_CAS_ReceivingBill rbill
             on (rbillEntry.FReceivingBillID = rbill.FID and rbill.CFActuallyArriveTime is not null)
               left join t_Org_Company orgCompany on orgCompany.Fid = rbill.Fcompanyid     
            left join T_BD_Customer customer
              on rbill.FPayerID = customer.FID
            left join T_BD_BizAnaylysisCode bizSis
              on customer.FBizAnalysisCodeID = bizSis.fid
           where (rbill.CFActuallyArriveTime <= TO_DATE(substr('2012-02-29',1,10), 'YYYY-MM-DD') and
                 rbill.CFActuallyArriveTime >= TO_DATE(substr('2011-03-01',1,10), 'YYYY-MM-DD'))
             and rbill.FBillStatus = 14 --14已收款
             and (bizSis.Fnumber in ('01.00316') or 0 is null)
              and (orgCompany.fnumber in ('999.0056') or 0 is null)
              and rbill.FSourceType='100
这个语句为什么不能取出2012-02-29日的数据。而日前改为2012-03-01就可以取出。
执行结果:
1 1280000.0000 01.00316 999.0056 2011-12-07
2 800000.0000 01.00316 999.0056 2011-12-15
3 500000.0000 01.00316 999.0056 2011-12-23
4 1000000.0000 01.00316 999.0056 2012-02-29

解决方案 »

  1.   

    修改where条件如下:where (rbill.CFActuallyArriveTime <= TO_DATE('2012-02-29', 'YYYY-MM-DD') and
    rbill.CFActuallyArriveTime >= TO_DATE('2011-03-01', 'YYYY-MM-DD'))
      

  2.   

    大小比较条件不对吧,改成如下:rbill.CFActuallyArriveTime >= TO_DATE(substr('2012-02-29',1,10), 'YYYY-MM-DD') and
    rbill.CFActuallyArriveTime <= TO_DATE(substr('2011-03-01',1,10), 'YYYY-MM-DD'))
      

  3.   

    我试了,还是不行
           select rbillEntry.FActualAmt as rbillEntry,
                     customer.FNumber as Fnumber,orgCompany.Fnumber as orgCompanyFnumber ,to_char(rbill.CFActuallyArriveTime,'YYYY-MM-DD') as CFActuallyArriveTime  --实收金额 客户
                from T_CAS_ReceivingBillEntry rbillEntry --实收金额
                left join T_CAS_ReceivingBill rbill
                 on (rbillEntry.FReceivingBillID = rbill.FID and rbill.CFActuallyArriveTime is not null)
                   left join t_Org_Company orgCompany on orgCompany.Fid = rbill.Fcompanyid     
                left join T_BD_Customer customer
                  on rbill.FPayerID = customer.FID
                left join T_BD_BizAnaylysisCode bizSis
                  on customer.FBizAnalysisCodeID = bizSis.fid
               where (rbill.CFActuallyArriveTime <= TO_DATE('2012-02-29', 'YYYY-MM-DD') and
                     rbill.CFActuallyArriveTime >= TO_DATE('2011-03-01','YYYY-MM-DD'))
                 and rbill.FBillStatus = 14 --14已收款
                 and (bizSis.Fnumber in ('01.00316') or 0 is null)
                  and (orgCompany.fnumber in ('999.0056') or 0 is null)
                  and rbill.FSourceType='100
      

  4.   

    我需要查询2011-03-01 到2012-02-29之间的数据。
    我改为between and 也查不出来
      

  5.   

    where (rbill.CFActuallyArriveTime <= TO_DATE('2012-02-29 23:59:59', 'YYYY-MM-DD HH:Mi:SS') and
    rbill.CFActuallyArriveTime >= TO_DATE('2011-03-01', 'YYYY-MM-DD'))
      

  6.   

    比较大小错了吧,改成如下:rbill.CFActuallyArriveTime >= TO_DATE('2012-02-29', 'YYYY-MM-DD') and
    rbill.CFActuallyArriveTime <= TO_DATE('2011-03-01','YYYY-MM-DD')
      

  7.   

    错了,是2012吧:
    rbill.CFActuallyArriveTime >= TO_DATE('2012-02-29', 'YYYY-MM-DD') and
    rbill.CFActuallyArriveTime <= TO_DATE('2012-03-01','YYYY-MM-DD')
      

  8.   

    也许是你2012-02-29的时间还有时分秒,把它查询出来确认下:
    select to_char(CFActuallyArriveTime,'yyyymmdd hh24:mi:ss') 
    from T_CAS_ReceivingBill rbill
    where rbill.CFActuallyArriveTime >= TO_DATE('2012-02-29', 'YYYY-MM-DD')
     and  rbill.CFActuallyArriveTime <= TO_DATE('2012-03-01','YYYY-MM-DD')
      

  9.   

    楼主,你这个字段rbill.CFActuallyArriveTime的值是多少,看下时分秒都是00吗?