MySQL 'YEARWEEK ()' выключен на 1 неделю - PullRequest
0 голосов
/ 11 сентября 2018

Когда я запускаю: SELECT YEARWEEK('2018-09-11');, он возвращает 201836.

Что?Конечно, это должна быть неделя 37.

Я знаю, что есть настройка, которая сообщает MySQL, с какого дня должна начинаться неделя, но это либо воскресенье, либо понедельник.Это вторник, так что это не должно иметь значения.

Есть мысли, что может происходить?Я использую MariaDB 10.1.32 на сервере CentOS 7.

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Вы должны увидеть этот сайт для справки: MySQL YEARWEEK ()

В соответствии с вышеизложенным, вы можете указать, как следует подсчитывать недели: второй аргумент (необязательно) указывает, какой день недели будет первым и сколько дней должно быть в нем, например,:

1 - первый день недели - понедельник, а в первой неделе более 3 дней

Вы можете попробовать этот запрос:

SELECT YEARWEEK('2018-09-11')
union all
SELECT YEARWEEK('2018-09-11', 1)
union all
SELECT YEARWEEK('2018-09-11', 3);

Возвращает:

201836
201837
201837

Итак, вы должны почувствовать, как использовать YEARWEEK.

Демо-версия.

0 голосов
/ 11 сентября 2018

В этом случае настройка по умолчанию использует опцию режима [0] (SHOW VARIABLES LIKE 'default_week_format'), что означает, что воскресенье принимается во внимание. Означает также 2018-09-08, который возвращает 36. Чтобы получить следующую неделю, начните с понедельника, mode [1].

0 голосов
/ 11 сентября 2018

Вам необходимо правильно использовать флаг mode в зависимости от того, как вы определяете первую неделю года

SELECT YEARWEEK('2018-09-12',0); -- 201836
SELECT YEARWEEK('2018-09-12',1); -- 201837
SELECT YEARWEEK('2018-09-12',2); -- 201836
SELECT YEARWEEK('2018-09-12',3); -- 201837
SELECT YEARWEEK('2018-09-12',4); -- 201837
SELECT YEARWEEK('2018-09-12',5); -- 201837
SELECT YEARWEEK('2018-09-12',6); -- 201837
SELECT YEARWEEK('2018-09-12',7); -- 201837

См. Документацию MySql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...