周的计算

 

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

你可能感兴趣的:(周的计算)