有个苦恼:一般企业都是从上月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函数,录入任一日期就自动归集到某年某月呢?
可是我不能每个月都要进行比较一次吧,如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函数,录入任一日期就自动归集到某年某月呢?
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