Почему переменная default_week_format применяется к НЕДЕЛЕ, но не к YEARWEEK

Я поставил вопрос ранее, на который был дан правильный ответ, и заставил меня найти, что моя функция YEARWEEK() использовала нулевой режим по умолчанию и давала мне результаты, которых я не хотел. Я прочитал руководство для YEARWEEK, которое ссылалось на WEEK относительно режимов, и он сказал, что если аргумент режима не используется, используется значение default_week_format. Я решил, что мне нужен режим 6, поэтому я принял необходимые меры, чтобы изменить переменную на 6. Однако это изменение влияет только на функцию WEEK ().

Я получаю следующие результаты:

SELECT YEARWEEK(NOW())
  201301
SELECT YEARWEEK(NOW(), 6)
  201302
SELECT WEEK(NOW())
  2
SELECT WEEK(NOW(), 6)
  2

Это проблема с MySQL или что-то я делаю неправильно? Я читаю руководство несколько раз, и он конкретно указывает в описании YEARWEEK: «Аргумент mode работает точно так же, как аргумент mode для WEEK ()». Однако в нем конкретно не указано (как в описании WEEK): «Если аргумент mode опущен, используется системная переменная default_week_format».

Должна ли YEARWEEK() использовать значение переменной, если она не указана, или я ошибаюсь в этом отношении? Мне кажется, что эти две функции должны вести себя одинаково, тем более, что одно относится к другому для этой части его описания.

1
nl ja de

1 ответы

Должно ли YEARWEEK() использовать значение переменной, если ни один не указан, или я ошибаюсь в этом отношении?

<Сильный> Нет.

Хотя я понимаю аргумент, это документировано и, следовательно, ожидаемое поведение . В документах default_week_format :

Значение по умолчанию для функции WEEK() .

Таким образом, эта системная переменная только используется для WEEK() . Однако, как вы отметили, обе функции позволяют использовать week_format как второй аргумент. Поэтому я бы посоветовал вам не устанавливать это на уровне сервера, а в коде для ясности.

1
добавлено
Посмотрев, я согласен с вашей точкой зрения. Вы всегда можете отправить ошибку в MySQL.
добавлено автор Jason McCreary, источник
Спасибо, я не проверял документы на самой переменной.
добавлено автор Geoff, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw