week(周)
返回给定日期的周数。此函数的工作方式与 MySQL 中的 WEEK 函数相同。
此函数从 v2.3 开始支持。
语法
INT WEEK(DATETIME|DATE date, INT mode)
参数
-
Date
:支持的数据类型为 DATETIME 和 DATE。 -
Mode
:可选。支持的数据类型为 INT。此参数用于指定计算周数的逻辑,即周是从星期日还是星期一开始,以及返回值是在 0–53 还是 1–53 范围内。取值范围:0–7。默认值:0
。如果未指定此参数,则默认使用模式0
。下表描述了此参数的工作方式。
Mode(模式) | First day of week(每周的第一天) | 范围 | Week 1 is the first week …(第一周是包含...的周) |
---|---|---|---|
0 | 星期日 | 0-53 | with a Sunday in this year(当年包含周日) |
1 | 星期一 | 0-53 | with 4 or more days this year(当年包含 4 天或更多天) |
2 | 星期日 | 1-53 | with a Sunday in this year(当年包含周日) |
3 | 星期一 | 1-53 | with 4 or more days this year(当年包含 4 天或更多天) |
4 | 星期日 | 0-53 | with 4 or more days this year(当年包含 4 天或更多天) |
5 | 星期一 | 0-53 | with a Monday in this year(当年包含星期一) |
6 | 星期日 | 1-53 | with 4 or more days this year(当年包含 4 天或更多天) |
7 | 星期一 | 1-53 | with a Monday in this year(当年包含星期一) |
返回值
返回 INT 类型的值。取值范围:0–53。具体范围取决于 mode
参数。如果 date
的值无效或输入值为空,则返回 NULL
。
示例
计算 2007-01-01
的周数。 2007-01-01
是日历上的星期一。
Mode
设置为0
,返回0
。周从星期日开始。2007-01-01
是星期一,不能是第 1 周。因此,返回0
。
mysql> SELECT WEEK('2007-01-01', 0);
+-----------------------+
| week('2007-01-01', 0) |
+-----------------------+
| 0 |
+-----------------------+
1 row in set (0.02 sec)
Mode
设置为1
,返回1
。周从星期一开始,2007-01-01
是星期一。
mysql> SELECT WEEK('2007-01-01', 1);
+-----------------------+
| week('2007-01-01', 1) |
+-----------------------+
| 1 |
+-----------------------+
1 row in set (0.02 sec)
Mode
设置为2
,返回53
。周从星期日开始。但是,2007-01-01
是星期一,取值范围是 1–53。因此,返回53
,表示这是上一年的最后一周。
mysql> SELECT WEEK('2007-01-01', 2);
+-----------------------+
| week('2007-01-01', 2) |
+-----------------------+
| 53 |
+-----------------------+
1 row in set (0.01 sec)