WithCoderWithCoderWithCoder

MySQL week()函数及参数mode详解

    通常,一年的正常年份为365天,闰年为366天。一年又可以分为许多周,每周有7天。 所以一年,我们经常有365/7 = 52周,周范围是从1到52。

    要查看给定日期属于哪个周数,您可以使用WEEK函数,语法如下所示:

WEEK(date[,mode])

    该函数返回date 对应的星期数。其中:

    • date是要获取周数的日期

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

    如果忽略mode参数,默认情况下WEEK函数将使用 default_week_format 系统变量的值。

    要获取 default_week_format 变量的当前值,可以使用 SHOW VARIABLES 语句如下:

mysql> show variables like 'default_week_format';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| default_week_format | 0     |
+---------------------+-------+
1 row in set, 1 warning (0.00 sec)

    mode 参数的使用    

    默认情况下,default_week_format的默认值为0,下面的表格说明了 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周

    举例:

    查看当天属于哪一周:

mysql> select week(now());
+-------------+
| week(now()) |
+-------------+
|          35 |
+-------------+
1 row in set (0.00 sec)


欢迎分享交流,转载请注明出处:WithCoder » MySQL week()函数及参数mode详解