在本教程中,您将学习如何使用MySQL WEEK函数来获取日期的周数。
MySQL WEEK函数介绍
通常,一年的正常年份为365天,闰年为366天。一年又可以分为许多周,每周有7天。 所以一年,我们经常有365/7 = 52周,周范围是从1到52。
要查看给定日期属于哪个周数,您可以使用WEEK函数,如下所示:
WEEK(date, mode);
WEEK函数接受两个参数:
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
在我们的服务器中,default_week_format的默认值为0,下表格说明了mode参数如何影响WEEK函数:
模式
一周的第一天
范围
0
星期日
0-53
1
星期一
0-53
2
星期日
1-53
3
星期一
1-53
4
星期日
0-53
5
星期一
0-53
6
星期日
1-53
7
星期一
1-53
上表中“今年有4天以上”表示:
如果星期包含1月1日,并且在新的一年中有4天或更多天,那么这周是第1周。
否则,这一周的数字是前一年的最后一周,下周是第1周。
WEEK函数返回一个周数,遵循ISO 8601:1988
MySQL WEEK功能示例
请参阅示例数据库(yiibai)中的orders表,如下所示 -
以下声明使用WEEK函数返回2013年每周的订单数量:
use yiibaidb;SELECT
WEEK(orderDate) week_no,
COUNT(*)
FROM
orders
WHERE
YEAR(orderDate) = 2013
GROUP BY WEEK(orderDate);
Database changed
执行上面查询语句,得到以下结果 -
+---------+----------+
| week_no | COUNT(*) |
+---------+----------+
| 1 | 3 |
| 4 | 2 |
| 6 | 1 |
| 7 | 1 |
| 8 | 1 |
| 9 | 1 |
| 10 | 1 |
| 11 | 1 |
| 12 | 3 |
| 13 | 2 |
| 14 | 1 |
| 15 | 1 |
| 16 | 1 |
| 17 | 2 |
| 18 | 2 |
| 20 | 3 |
| 21 | 1 |
| 22 | 2 |
| 23 | 1 |
| 24 | 2 |
| 25 | 2 |
| 26 | 3 |
| 27 | 2 |
| 28 | 1 |
| 29 | 1 |
| 30 | 1 |
| 31 | 2 |
| 32 | 1 |
| 34 | 1 |
| 35 | 2 |
| 36 | 2 |
| 37 | 2 |
| 38 | 2 |
| 39 | 3 |
| 40 | 7 |
| 41 | 2 |
| 42 | 5 |
| 43 | 1 |
| 44 | 10 |
| 45 | 9 |
| 46 | 6 |
| 47 | 5 |
| 48 | 8 |
| 49 | 1 |
+---------+----------+
44 rows in set
在本教程中,您已经学会了如何使用MySQL WEEK函数从指定的日期获取周数。
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。