Перейти к основному содержимому

week

Описание

Возвращает номер недели для заданной даты. Эта функция работает так же, как функция WEEK в MySQL.

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

INT WEEK(DATETIME|DATE date, INT mode)

Параметры

  • Date: Поддерживаемые типы данных — DATETIME и DATE.

  • Mode: необязательный. Поддерживаемый тип данных — INT. Этот параметр используется для указания логики вычисления номера недели, то есть начинается ли неделя с воскресенья или понедельника, и находится ли возвращаемое значение в диапазоне 0–53 или 1–53. Диапазон значений: 0–7. Значение по умолчанию: 0. Если этот параметр не указан, по умолчанию используется режим 0. В следующей таблице описано, как работает этот параметр.

РежимПервый день неделиДиапазонНеделя 1 — это первая неделя …
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с понедельником в этом году

Возвращаемое значение

Возвращает значение типа INT. Диапазон значений: 0–53. Конкретный диапазон определяется на основе параметра mode. Возвращается NULL, если значение date недействительно или входное значение пустое.

Примеры

Вычислить номер недели для 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)