算法有点复杂:
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/
本文介绍了一个SQL算法,用于计算指定年份中任意一周的开始和结束日期。该算法考虑了不同地区对于周起始日的习惯差异,并提供了一种灵活的方式来进行计算。
8886

被折叠的 条评论
为什么被折叠?



