跳到主要内容

WEEKOFYEAR

描述

WEEKOFYEAR 函数用于返回指定日期在当年的周数(范围 1-53)。 一周从星期一开始,到星期天结束。 当年中,若某一周包含的日期在当年的天数 ≥ 4 天,则该周为当年的第 1 周;否则,该周属于上一年的最后一周(可能为 52 或 53 周)。

该函数与 mysql 中的 weekofyear 函数 行为一致。

语法

INT WEEKOFYEAR(DATETIME `<date_or_time_expr>`)

参数

参数描述
<datetime_or_date>输入的日期时间值,支持输入 date/datetime 类型,具体 datetime 和 date 格式请查看 datetime 的转换date 的转换

返回值

返回 INT 类型的周数,范围为 1-53,代表日期所在年份的第几周。

  • 若 1 月 1 日所在周在当年的天数不足 4 天(如 1 月 1 日为星期三,该周仅 1 月 1-3 日属于当年,共 3 天),则该周归属上一年,当年的第 1 周从下一个星期日开始计算。
  • 当一年的 12 月月底所在周天数总数小于 4 ,则这一周属于下一年第一周
  • 输入 NULL,返回 NULL

举例

-- 2023-05-01 是星期一,所在周为 2023 年第 18 周
SELECT WEEKOFYEAR('2023-05-01') AS week_20230501;
+---------------+
| week_20230501 |
+---------------+
| 18 |
+---------------+

-- 2023-01-02 至 2023-01-08 这一周,包含 2023 年的天数为 7 天(≥4),属于 2023 年第 1 周
SELECT WEEKOFYEAR('2023-01-02') AS week_20230102;
+---------------+
| week_20230102 |
+---------------+
| 1 |
+---------------+

-- 2021-12-27(星期一)至 2022-01-02(星期日)这一周,2022 年的天数仅 2 天(1-2 日 <4),故属于 2021 年
SELECT WEEKOFYEAR('2023-01-02') AS week_20230102;
+---------------+
| week_20230102 |
+---------------+
| 1 |
+---------------+

-- 说明:2023-12-25 至 2023-12-31(星期日)这一周,包含 2023 年的天数为 7 天(≥4),属于 2023 年
SELECT WEEKOFYEAR('2023-12-25') AS week_20231225;
+---------------+
| week_20231225 |
+---------------+
| 52 |
+---------------+


---返回 1022 年的第一周
select weekofyear('1023-01-04');
+--------------------------+
| weekofyear('1023-01-04') |
+--------------------------+
| 1 |
+--------------------------+

-- 2023-12-30 属于 2023 年第 52 周,2024-01-01(星期一)所在周为 2024 年第 1 周
SELECT WEEKOFYEAR('2024-01-01') AS week_20240101;
+---------------+
| week_20240101 |
+---------------+
| 1 |
+---------------+


-- NULL 输入(返回 NULL)
SELECT WEEKOFYEAR(NULL) AS week_null_input;
+-----------------+
| week_null_input |
+-----------------+
| NULL |
+-----------------+