Есть ли разница между функциями WEEK () и DATE_FORMAT () в MySQL? - PullRequest
1 голос
/ 16 февраля 2011

Чтобы извлечь неделю из даты в MySQL, есть несколько вариантов, но я спрашивал, есть ли разница между WEEK(date, 0) и DATE_FORMAT(date, '%U') с точки зрения реализации.

Я имею в виду, что 2 функции возвращают одинаковые результаты, но в фоновом режиме это одна и та же реализация? Один звонит другому? Есть устаревший?

Я искал документацию по функциям Дата и время в MySQL , но не нашел ответа. Спасибо за ваше просветление!

Примечание: в зависимости от того, что вы хотите на выходе, вам придется использовать один или другой с другими параметрами (от 0 до 52 недель или от 0 до 53? Начинается в воскресенье или понедельник? Первая неделя с по крайней мере 3 дня?), Но я спрашиваю об этом конкретном случае.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Как сказали комментаторы, week () - это ярлык для общей функции date_format (). Кроме того, как упоминалось в @nos, date_format () возвращает строку (из-за ее общего поведения, я думаю), хотя week () возвращает целое число.

Я хотел исследовать, чтобы проверить эту теорию, и изучил исходный код. Эти две функции реализованы в файле item_timefunc.cc .

И угадайте что? Они оба приводят к функции calc_week в sql_time.cc Таким образом, week(date) на самом деле не является ярлыком для date_format(date, '%v'), но они оба вызывают одну и ту же функцию после вычисления параметров из ввода.

1 голос
/ 16 февраля 2011

Разница в том, что они возвращают разные типы данных. WEEK () возвращает целое число, тогда как DATE_FORMAT () возвращает символьное значение.

Это фундаментальная разница.

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