注意(關於IW計算週數):
1、如果一年當中第52周別之後至當年的12月31日之間,還有大於或等於4天的話,則定爲當年的第53周,否則剩餘這些天數被歸爲下一年的第1周;
2、如果在不足52周別的話,則以下一年的時間來補;
3、每週固定的從週一開始作爲本週的第1天,到週日作爲本週的第7天;
1、關於to_char格式'W','WW','IW'
a 、SELECT TO_CHAR(date,'W') FROM DUAL ---date是本月的第幾周,其中本月的1號是第1周第1天。
b、 SELECT TO_CHAR(date,'WW') FROM DUAL ---date是本年的第幾周,其中本年1月1號是第1周的第1天。
其中a、b的標準是一樣的,周都是從本年的1月1號或者本月的1號記爲第一週的第一天。
c、SELECT TO_CHAR(date,'IW') FROM DUAL ---date是本年的第幾周,其中本年第一個週一對應爲第1周的第1天,這個符合中國人的周的概念
2、查詢今天是本月第幾周
SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" from dual;
或
SELECT TO_CHAR(SYSDATE,'W') AS "weekOfMon" from dual;
3、查今天是 "今年" 的第幾周
select to_char(sysdate,'ww') from dual;
或
select to_char(sysdate,'iw') from dual;
附註:
上文所提之iw及ww格式在doc內解釋如下
IW = Week of year (1-52 or 1-53) based on the ISO standard
WW = Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
4、用iw的算法查詢星期一或星期日是幾號
公式:
每週第一天 :next_day(date,,'MONDAY') + 周 * 7 - 7
每週最後一天:next_day(date,'MONDAY') + 周 * 7 - 1 or next_day(date,,'SUNDAY') + 周 * 7 - 7
5、用iw的算法查詢星期一或星期日是幾號
公式:
每週第一天 :date + 周 * 7 - 7
每週最後一天:date + 周 * 7 - 1
6、個數不同的字母表示不同的含義
SELECT TO_CHAR(SYSDATE,'d') AS "weekOfMon" from dual; ---星期中的第幾天
SELECT TO_CHAR(SYSDATE,'dd') AS "weekOfMon" from dual; ---月份中的第幾天
SELECT TO_CHAR(SYSDATE,'ddd') AS "weekOfMon" from dual; ---年份中的第幾天
SELECT TO_CHAR(SYSDATE,'w') AS "weekOfMon" from dual; ---月份中的第幾周(1日爲當月第一週第1天)
SELECT TO_CHAR(SYSDATE,'ww') AS "weekOfMon" from dual; ---年份中的第幾周(1月1日當年第一週第1天)
SELECT TO_char(SYSDATE,'sssss') FROM dual ---從午夜開始過去的秒數