说一下ISO-8601周(星期四原则周)

浏览: 2866

先解释一下什么叫ISO-8601周,或者星期四原则周,这里我先简称为iso周。

iso周简单来说就是把跨年或者跨月的周当成一个周来看,而根据其星期四所属的位置来决定这一周是属于上一个月还是下一个月。

比如下图,2017年1月1日是星期日,它属于2016年12月26日-2017年1月1日所组成的一个星期。由于这一周的星期四(2016.12.29)属于上一年的12月份,所以这周被认为是2016年的第52周而不是2017年的01周。


Clipboard Image.png

再看一个例子,2016年9月1日正好是个星期四,这一天属于9月,那么它所在的这一周都被认为是属于9月份的第一周,以此类推。

Clipboard Image.png

那么,符合这种原则的星期计算系统是经过国际标准组织认证的,标准名就是ISO-8061。

如果你看MSDN中关于datepart函数的解释,它其中一个可用的参数就是ISO_WEEK,具体用起来什么效果呢?我们看一下下图。

图中我用wk和iso_week两个参数分别查看2017年1月1日所属的周数,wk返回的是1,ISO_WEEK返回的则是52,或者更准确的说是2016年的第52周。区别就在这里!

Clipboard Image.png

如果你在欧美的企业里做BI系统的话,你会有很大概率遇到这种需求或者问题,需要谨记。

这里附送一些资料

1. http://www.epochconverter.com/weeks/2016   这里详细列出了2016年的ISO标准的每一周的起始和结束日期,下方有链接可以查看其它年份

2. https://en.wikipedia.org/wiki/ISO_8601     维基百科关于ISO8601标准的解释


如果您有什么看法,欢迎交流

推荐 1
本文由 Naralee 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册