Последнее обновление
WEEKOFYEAR
Описание
Функция WEEKOFYEAR возвращает номер недели в году для указанной даты (диапазон 1-53). Неделя начинается в понедельник и заканчивается в воскресенье. Если на текущий год приходится 4 или более дней недели, она считается 1-й неделей текущего года; в противном случае она относится к последней неделе предыдущего года (это может быть неделя 52 или 53).
Эта функция соответствует функции weekofyear в MySQL.
Синтаксис
INT WEEKOFYEAR(`<date_or_time_expr>`)
Параметры
| Параметр | Описание |
|---|---|
<date_or_time_expr> | Входное значение даты и времени; поддерживаются типы date/datetime. О форматах datetime и date см. разделы преобразование даты и времени и преобразование даты |
Возвращаемое значение
Возвращает номер недели типа INT в диапазоне 1-53, обозначающий неделю года, к которой относится дата.
- Если неделя, на которую приходится 1 января, содержит менее 4 дней текущего года (например, если 1 января приходится на среду, в эту неделю на текущий год приходятся только 1-3 января, то есть всего 3 дня), то эта неделя относится к предыдущему году, а 1-я неделя текущего года начинается со следующего понедельника.
- Если неделя в конце декабря содержит в общей сложности менее 4 дней, она относится к первой неделе следующего года
- Если на вход передано NULL, возвращается NULL
Примеры
-- 2023-05-01 is Monday, belongs to week 18 of 2023
SELECT WEEKOFYEAR('2023-05-01') AS week_20230501;
+---------------+
| week_20230501 |
+---------------+
| 18 |
+---------------+
-- The week from 2023-01-02 to 2023-01-08 contains 7 days in 2023 (≥4), belongs to week 1 of 2023
SELECT WEEKOFYEAR('2023-01-02') AS week_20230102;
+---------------+
| week_20230102 |
+---------------+
| 1 |
+---------------+
-- 2024-01-01 (Monday) belongs to week 1 of 2024
SELECT WEEKOFYEAR('2024-01-01') AS week_20240101;
+---------------+
| week_20240101 |
+---------------+
| 1 |
+---------------+
-- The week 2021-12-27 (Monday) through 2022-01-02 (Sunday) only has 2 days
-- in 2022 (<4), so it belongs to the last week of 2021 (week 52)
SELECT WEEKOFYEAR('2022-01-02') AS week_20220102;
+---------------+
| week_20220102 |
+---------------+
| 52 |
+---------------+
-- 2023-12-25 (Monday) through 2023-12-31 (Sunday) has 7 days in 2023 (≥4),
-- so it belongs to week 52 of 2023
SELECT WEEKOFYEAR('2023-12-25') AS week_20231225;
+---------------+
| week_20231225 |
+---------------+
| 52 |
+---------------+
-- Pre-modern dates work too — the function does not validate a minimum year
SELECT weekofyear('1023-01-04');
+--------------------------+
| weekofyear('1023-01-04') |
+--------------------------+
| 1 |
+--------------------------+
-- NULL input (returns NULL)
SELECT WEEKOFYEAR(NULL) AS week_null_input;
+-----------------+
| week_null_input |
+-----------------+
| NULL |
+-----------------+