-
1505121235 数据老手Lv5
发表于2019-1-27 13:44
楼主
本帖最后由 1505121235 于 2019-1-27 13:50 编辑
需求场景:
下面,咱们通过一些具体的例子来了解下wofy函数的用法:
(1)WOFY(D)
需求场景:
有些分析场景中,可能会遇到求某个日期所在周是所在年的第几周的需求,但是在跨年前后,新的一年,第一周有几天才算一周?每周从周几开始算是一周的第一天?不同的算法规则,返回的结果也会不同。wofy函数就能很方便的根据不同的算法规则,返回对应的所在周数。
函数体结构: WOFY(D),或WOFY(D,num1),或WOFY(D,num1,num2) | D:指定的日期 num1:指定第一周至少有多少天,范围从1到7,超过范围采用默认值.默认值为7 num2:指定一周是从星期几开始,范围从1到7,分别表示星期天,星期一,星期二,星期三,星期四,星期五,星期六,超过范围采用默认值.默认值为1 | 返回日期Date所在的周是所在年的第几周,返回值是整数 |
(1)WOFY(D)
D:指定的日期值;
第二个参数和第三个参数省略的情况下默认第一周有七天才能算一周,而且默认每周从星期日开始,因为2019-01-01到2019-01-05不满七天,所以算到上一年的最后一周
wofy(#2018-12-29#)=51
wofy(#2018-12-30#)=52
wofy(#2019-01-01#)=52
wofy(#2019-01-05#)=52
wofy(#2019-01-06#)=1
wofy(#2019-01-13#)=2
(2)WOFY(D,num1) num1:指定第一周至少有多少天;
范围从1到7,超过范围采用默认值.默认值为7(这个参数指定的就是每年第一周到底多少天才算作一周,如果满足这个数字就是当年的第一周,如果不满足就算到上一年的最后一周)
wofy(#2019-01-01#,5)=1(指定第一周有5天就算一周,2019-01-01到2019-01-05刚好五天算一周,所以是2019年的第一周)
wofy(#2019-01-01#,7)=52(指定第一周有7天才算一周,因为2019-01-01到2019-01-05不满七天,所以算到上一年的最后一周)
wofy(#2019-01-06#,5)=2(指定第一周有5天就算一周,所以2019-01-06就是2019年的第二周)
wofy(#2019-01-06#,6)=1(指定第一周有6天就算一周,所以2019-01-06就是2019年的第一周)
(3)WOFY(D,num1,num2) num2:指定一周是从星期几开始;
范围从1到7,分别表示星期天,星期一,星期二,星期三,星期四,星期五,星期六,超过范围采用默认值.默认值为1。
wofy(#2019-01-01#,7,1)=52(第一周有7天才算一周,而且每周从星期日开始,2019-01-01到2019-01-05不满七天所以算到上一年最后一周)
wofy(#2018-12-31#,7,2)=53(每周从星期一开始,2018-12-31是星期一,而且是2018年的第53周)
wofy(#2019-01-01#,7,2)=53
wofy(#2019-01-06#,7,1)=1(指定2019年第一周有7天才算一周,而且每周从星期日开始,2019-01-01到2019-01-05不满七天所以算到上一年最后一周,2019-01-06是星期日所以是2019年的第一周)
wofy(#2019-01-06#,7,2)=53(每周有7天,每周从星期一开始,2019-01-06是2018年第53周的最后一天)