有个苦恼:一般企业都是从上月26日到本月25日结帐,在处理记录时如2010-1-26到2010-2-25是一个周期,
可是我不能每个月都要进行比较一次吧,如26到25号应是一个周期,这时必要知道月份才行,
2.26至3.25才知是2月份的.
我有个入出库数据库,添加了存储月份的字段和年的字段
我想实现自动归集,如当前系统日期如果2009-6-23归为6月份数据,2009-6-27归为7月份,2009-8-1归为8月份.....
如果跨年了,又怎么办?如2009-12-25是2009年12月份,2009-12-26至2010-1-25又是2010年的1月份
如何写这一个Sql函数,录入任一日期就自动归集到某年某月呢?

解决方案 »

  1.   

    SQL> create or replace function trans(time in date)
      2  return varchar2
      3  is
      4  year number;
      5  month number;
      6  day number;
      7  result varchar2(40);
      8  begin
      9  year:=extract(year from time);
     10  month:=extract(month from time);
     11  day:=extract(day from time);
     12  if(day>=26) then
     13  if(month=12) then
     14  result:=to_char(year+1)||'-'||'1';
     15  else
     16  result:=to_char(year)||'-'||to_char(month+1);
     17  end if;
     18  else
     19  result:=to_char(year)||'-'||to_char(month);
     20  end if;
     21  return result;
     22  end trans;
     23  /Function created.
    SQL> col result format a30
    SQL> select time,trans(time) result from t1;TIME            RESULT
    --------------- ------------------------------
    18-FEB-10       2010-2
    27-FEB-10       2010-3
    10-MAR-10       2010-3
    29-DEC-09       2010-1