今天碰到一个问题,说在 mysql 里面, 要按周统计, 周的计算,是从 每周一到周日。
简单了写了下
SELECT
WEEK ( date )
SUM ( sale )
FROM
表
GROUP BY
WEEK( date );
发现 默认情况下, 这个 WEEK ( 日期 ) 是 每把周日,作为一周的开始。
去查询了一下手册,看到这个 WEEK 函数, 还可以额外再跟一个 参数。
这个参数决定了, 使用星期几,来作为 一周的开始。
以及用什么样的逻辑,来计算 一年里面, 第一周的计算方式。
这个参数的描述如下:
参数值
每周第一天
是星期几
返回值
范围
第一周是怎么计算的?
0
星期天
0-53
遇到本年的第一个星期天开始,是第一周。
前面的计算为第0周。
1
星期一
0-53
假如第一周能超过3天,那么计算为本年的第一周。否则为第0周
可以理解为
如果1月1号~4号是星期一,那么本年第一周开始。(之前的是第零周)
如果1月5号以后是星期一,那么现在开始,是本年的第二周了,之前的是第一周。
2
星期天
1-53
遇到本年的第一个星期天开始,是第一周。
前面的计算为上年度的第5x周。
3
星期一
1-53
假如第一周能超过3天,那么计算为本年的第一周。否则为上年度的第5x周。
可以理解为
如果1月1号~4号是星期一,那么本年第一周开始。(之前的是第5x周)
如果1月5号以后是星期一,那么现在开始,是本年的第二周了,之前的是第一周。
4
星期天
0-53
假如第一周能超过3天,那么计算为本年的第一周。否则为第0周
可以理解为
如果1月1号~4号是星期天,那么本年第一周开始。(之前的是第零周)
如果1月5号以后是星期天,那么现在开始,是本年的第二周了,之前的是第一周。
5
星期一
0-53
遇到本年的第一个星期一开始,是第一周。
前面的计算为第0周。
6
星期天
1-53
假如第一周能超过3天,那么计算为本年的第一周。否则为上年度的第5x周。
可以理解为
如果1月1号~4号是星期天,那么本年第一周开始。(之前的是第5x周)
如果1月5号以后是星期天,那么现在开始,是本年的第二周了,之前的是第一周。
7
星期一
1-53
遇到本年的第一个星期一开始,是第一周。
前面的计算为上年度的第5x周。