跳到主要内容
版本: 最新版本-3.5

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-53with a Sunday in this year(当年包含周日)
1星期一0-53with 4 or more days this year(当年包含 4 天或更多天)
2星期日1-53with a Sunday in this year(当年包含周日)
3星期一1-53with 4 or more days this year(当年包含 4 天或更多天)
4星期日0-53with 4 or more days this year(当年包含 4 天或更多天)
5星期一0-53with a Monday in this year(当年包含星期一)
6星期日1-53with 4 or more days this year(当年包含 4 天或更多天)
7星期一1-53with 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)