MySQL YEARWEEK() 函数使用指南

MySQL YEARWEEK() 函数返回一个表示给定日期所在年份和第几周的数字。此函数与 WEEK() 类似。

YEARWEEK() 语法

这是 MySQL YEARWEEK() 函数的语法:

YEARWEEK(date)
YEARWEEK(date, mode)

参数

date
必需的。一个日期或者日期时间表达式。
mode
可选的。确定计算周的逻辑。如果没有指定该参数,默认将使用 default_week_format 变量的值。

返回值

MySQL YEARWEEK() 函数返回一个表示给定日期所在年份和第几周的数字。

下表整理了 YEARWEEK() 函数对 mode 参数的处理逻辑:

Mode 每周的第一天 返回值范围 对第一周的要求
0 星期天 0-53
1 星期一 0-53 在本年至少 4 天
2 星期天 1-53
3 星期一 1-53 在本年至少 4 天
4 星期天 0-53 在本年至少 4 天
5 星期一 0-53
6 星期天 1-53 在本年至少 4 天
7 星期一 1-53
  • 如果指定的表达式不是一个合法的日期或者日期时间,YEARWEEK() 函数将返回 NULL
  • 如果参数为 NULLYEARWEEK() 函数将返回 NULL

YEARWEEK() 示例

这里是几个 YEARWEEK() 函数的示例。

SELECT
    YEARWEEK('2022-01-01', 0),
    YEARWEEK('2022-01-03', 0),
    YEARWEEK('2022-01-01', 1),
    YEARWEEK('2022-01-03', 1),
    YEARWEEK('2022-01-01', 2),
    YEARWEEK('2022-01-03', 2),
    YEARWEEK('2022-01-01', 3),
    YEARWEEK('2022-01-03', 3),
    YEARWEEK('2022-01-01', 4),
    YEARWEEK('2022-01-03', 4),
    YEARWEEK('2022-01-01', 5),
    YEARWEEK('2022-01-03', 5),
    YEARWEEK('2022-01-01', 6),
    YEARWEEK('2022-01-03', 6),
    YEARWEEK('2022-01-01', 7),
    YEARWEEK('2022-01-03', 7)\G
YEARWEEK('2022-01-01', 0): 202152
YEARWEEK('2022-01-03', 0): 202201
YEARWEEK('2022-01-01', 1): 202152
YEARWEEK('2022-01-03', 1): 202201
YEARWEEK('2022-01-01', 2): 202152
YEARWEEK('2022-01-03', 2): 202201
YEARWEEK('2022-01-01', 3): 202152
YEARWEEK('2022-01-03', 3): 202201
YEARWEEK('2022-01-01', 4): 202152
YEARWEEK('2022-01-03', 4): 202201
YEARWEEK('2022-01-01', 5): 202152
YEARWEEK('2022-01-03', 5): 202201
YEARWEEK('2022-01-01', 6): 202152
YEARWEEK('2022-01-03', 6): 202201
YEARWEEK('2022-01-01', 7): 202152
YEARWEEK('2022-01-03', 7): 202201

default_week_format

如果没有指定 mode 参数,WEEK() 默认将使用 default_week_format 变量的值。我们可以通过以下语句查看 default_week_format 变量的值。

SHOW VARIABLES LIKE 'default_week_format';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| default_week_format | 0     |
+---------------------+-------+