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)