zoukankan      html  css  js  c++  java
  • 关于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')
    获取每个日期的周一,通过周一日期来排序统计,这样解决跨年的自然周问题
  • 相关阅读:
    core dump的使用
    wav文件格式
    Unicode编码 【转】
    WAV格式中常见的压缩编码
    两台交换机级联端口mac地址表维护(转载)
    pthread_cond_wait()的使用方法
    makefile自动依赖[转]
    11月的第一天
    再读simpledb 之 事务管理的实现(3)
    再读simpledb 之 元数据管理(1)
  • 原文地址:https://www.cnblogs.com/linn/p/4259021.html
Copyright © 2011-2022 走看看