Mysql的WEEK函数

Mysql的WEEK函数教程

WEEK 是周的意思,在 Mysql 中,WEEK 是求一个时间日期的在一年中的第几周。

Msyql的WEEK函数描述

语法

WEEK(date,mode);

描述

参数 描述
date 被计算的日期
mode 是一个可选参数,用于确定周数计算的逻辑。它允许您指定本周是从星期一还是星期日开始,返回的周数应在 0 到 52 之间或 0 到 53 之间。

在上面的参数中,mode 参数值是可以不传递的,如果不传递的话,它的值会以系统中的 default_week_format 作为值来填充,查询系统中的 default_week_format 值的语句为

-- 嗨客网(www.haicoder.net) SHOW VARIABLES LIKE 'default_week_format';

执行结果如下

10 week_01.png

mode 对应的不同值不同含义

模式 一周的第一天 范围 第一周是怎么计算的
0 星期日 0-53 从本年的第一个星期日开始,是第一周。前面的计算为第0周
1 星期一 0-53 假如1月1日到第一个周一的天数超过3天,则计算为本年的第一周。否则为第0周
2 星期日 1-53 从本年的第一个星期日开始,是第一周。前面的计算为上年度的第5x周
3 星期一 1-53 假如1月1日到第一个周日天数超过3天,则计算为本年的第一周。否则为上年度的第5x周
4 星期日 0-53 假如1月1日到第一个周日的天数超过3天,则计算为本年的第一周。否则为第0周
5 星期一 0-53 从本年的第一个星期一开始,是第一周。前面的计算为第0周。
6 星期日 1-53 假如1月1日到第一个周日的天数超过3天,则计算为本年的第一周。否则为上年度的第5x周
7 星期一 1-53 从本年的第一个星期一开始,是第一周。前面的计算为上年度的第5x周

案例

我们执行下面 sql

-- 嗨客网(www.haicoder.net) SELECT CURDATE(),DAYOFWEEK(CURDATE()),WEEK(CURDATE(),0);

运行结果如下:

11 WEEK_02.png

从上面执行的结果下面,我们可以看到,2020-01-01 是一周的第 6 天,即当天为礼拜五,mode 我们传递的是 0,按照上表中的 mode 枚举,它不是当年的第一个礼拜天,所以返回的值是 0。

Mysql的WEEK函数总结

在 Mysql 中,WEEK 是求一个时间日期的在一年中的第几周。