
正文
关于Oracle to_char()函数中的IW,WW 周别显示
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
1)ww的算法为每年1月1日为第一周开始,date+6为每一周结尾
例如20050101为第一周的第一天,而第一周的最后一天为20050101+6=20050107
公式 每周第一天 :date + 周 * 7 - 7
每周最后一天:date + 周 * 7 - 1
2) iw算法为自然周,即星期一到星期日为一周。且每年的第一个星期天为第一周,这样就会把去年的最后几天当成今年的第一周日期!!!
select to_char(date'2015-1-1', 'yyyyww') from dual;
--
select to_char(date'2015-1-1', 'yyyyiw') from dual;
--
select to_char(date'2015-1-5', 'yyyyww') from dual; select to_char(date'2015-1-5', 'yyyyiw') from dual; select to_char(date'2014-12-31', 'yyyyww') from dual; select to_char(date'2014-12-31', 'yyyyiw') from dual;
201401 特别注意这里,如果做统计,很容易和真正的201401周数据合并了,其实应该是201501周
select to_char(date'2014-12-28', 'yyyyww') from dual; select to_char(date'2014-12-28', 'yyyyiw') from dual;
推荐使用
trunc(date'','iw')
获取每个日期的周一,通过周一日期来排序统计,这样解决跨年的自然周问题







