注意(关于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 ---从午夜开始过去的秒数