数据就是每天的,上面也就是个例子也就是 select出这样的结果 



123232 2003-01-01 实际日期 2002-12-21 ------2003-01-20 
737843 2003-02-01 实际日期 2003-01-21 ------2003-02-20 
934344 2003-03-01 实际日期 2003-02-21 ------2003-03-20 
。 
。 

解决方案 »

  1.   

    select case when to_number(substr(stat_date,9,2))<=20
           then substr(stat_date,1,4)||substr(stat_date,6,2)||'01'  
      else 
          substr(to_char(add_months(to_date(stat_date,'yyyy-mm-dd'),1),'yyyy-mm-dd'),1,4)||
          substr(to_char(add_months(to_date(stat_date,'yyyy-mm-dd'),1),'yyyy-mm-dd'),6,2)||
          '01'
      end date_idor
    select 
    trunc(decode(sign(to_number(substr(stat_date,9,2))-20),1,to_date(stat_date,’yyyy-mm-dd’), add_months(to_date(stat_date,’yyyy-mm-dd’),1), to_date(stat_date,’yyyy-mm-dd’)),’mm’) date_id,