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)