Справочное руководство по MySQL версии 4.1.1-alpha



6.3.4 Функции даты и времени - часть 2


Вот как работает второй аргумент:

Величина Означает

0 Неделя начинается с воскресенья; возвращаемое значение - в промежутке 0-53

1 Неделя начинается с понедельника; возвращаемое значение - в промежутке 0-53

2 Неделя начинается с воскресенья; возвращаемое значение - в промежутке 1-53

3 Неделя начинается с понедельника; возвращаемое значение - в промежутке 1-53 (ISO 8601)

mysql> SELECT WEEK('1998-02-20'); -> 7

mysql> SELECT WEEK('1998-02-20',0); -> 7

mysql> SELECT WEEK('1998-02-20',1); -> 8

mysql> SELECT WEEK('1998-12-31',1); -> 53

Примечание: в версии 4.0 функция WEEK(#,0) была изменена с целью соответствия календарю США.

Заметьте, если неделя является последней неделей прошлого года, MySQL вернет 0

если вы не указали 2 или 3 как опциональный аргумент:

mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0); -> 2000, 0 mysql> SELECT WEEK('2000-01-01',2); -> 52

Можно считать, что MySQL должен вернуть 52, так как данная дата и является 52-ой неделей года 1999. Мы решили возвращать 0, так как мы хотим, чтобы функция давала "номер недели в указанном году". Это делает функцию WEEK() более надежной при использовании совместно с другими функциями, которые вычисляют части дат.

Если вам все же важно уточнить корректную неделю в году, тогда вы можете использовать 2 или 3

как опциональный аргумент или использовать YEARWEEK()

mysql> SELECT YEARWEEK('2000-01-01'); -> 199952 mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2); -> 52

YEAR(date)

Возвращает год для аргумента date в диапазоне от 1000 до 9999:

mysql> SELECT YEAR('98-02-03'); -> 1998

YEARWEEK(date)

YEARWEEK(date,first)

Возвращает год и неделю для аргумента date. Второй аргумент в данной функции работает подобно второму аргументу в функции WEEK(). Следует учитывать, что год может отличаться от указанного в аргументе date для первой и последней недель года:

mysql> SELECT YEARWEEK('1987-01-01'); -> 198653

Обратите внимание, что номер недели отличается от того, который возвращает функция WEEK() (0), будучи вызванной с опциональным аргументом 0 или 1. Это потому, что WEEK() возвращает номер недели именно в указанном году.




Содержание  Назад  Вперед