關於Oracle to_char()函數中的IW,WW 周別顯示


1)ww的算法為每年1月1日為第一周開始,date+6為每一周結尾

例如20050101為第一周的第一天,而第一周的最后一天為20050101+6=20050107

  公式 每周第一天 :date + 周 * 7 - 7

  每周最后一天:date + 周 * 7 - 1

2) iw算法為自然周,即星期一到星期日為一周。且每年的第一個星期天為第一周,這樣就會把去年的最后幾天當成今年的第一周日期!!!

 

 1 select to_char(date'2015-1-1', 'yyyyww')  from dual;
 2 -- 201501
 3 select to_char(date'2015-1-1', 'yyyyiw')  from dual;
 4 -- 201501
 5 select to_char(date'2015-1-5', 'yyyyww')  from dual;
 6 201501
 7 select to_char(date'2015-1-5', 'yyyyiw')  from dual;
 8 201502
 9 select to_char(date'2014-12-31', 'yyyyww')  from dual;
10 201453
11 select to_char(date'2014-12-31', 'yyyyiw')  from dual;
12 201401 特別注意這里,如果做統計,很容易和真正的201401周數據合並了,其實應該是201501周
13 select to_char(date'2014-12-28', 'yyyyww')  from dual;
14 201452
15 select to_char(date'2014-12-28', 'yyyyiw')  from dual;
16 201452

 推薦使用

trunc(date'','iw')
獲取每個日期的周一,通過周一日期來排序統計,這樣解決跨年的自然周問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM