算法有点复杂:
select to_date( '2005-01-01 ', 'yyyy-mm-dd ')
+mod(7 - to_number(to_char(to_date( '2005-01-01 ', 'yyyy-mm-dd '), 'd ')) + i,7)
+ (n - 1)*7 as bngdate,
to_date( '2005-01-01 ', 'yyyy-mm-dd ')
+mod(7 - to_number(to_char(to_date( '2005-01-01 ', 'yyyy-mm-dd '), 'd ')) + i,7)
+ n*7-1 as enddate
from dual;
上式中有两个参数,n和i,n为第n个完整周,i为每星期起始日,i=1表示从星期日开始算一周的第一天,i=2表示从星期一开始算一周的第一天,依次类推....。
将2005换成其它年份,就可以算其它年份的。可以改成过程或函数。
转自http://topic.youkuaiyun.com/t/20051124/12/4415292.html
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/67798/viewspace-1040721/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/67798/viewspace-1040721/