2013-05-15 2 views
-1

Я использую функцию week() из mysql для определения номера недели с даты. Проблема, с которой я сталкиваюсь, заключается в том, что она всегда возвращает одно меньшее число от фактического номера недели. предположим, что сегодня это 2013-05-15, так как это 20-я неделя этого года, но в результате это 19. Следующим является запрос, который я использую.Функция mysql week() возвращает одно меньшее количество фактических чисел недели

SELECT *,WEEK(date_visit) AS week_no FROM property_view_details; 
+0

Так в чем ваш вопрос? Добавление 1 к результату не кажется таким трудным :) –

+0

Нет, я не хочу добавлять его в результат :) Я просто хочу получить 20 не 19 – Farhan

+0

[Прочитайте документацию и исправьте свою ошибку] ​​(http: // dev .mysql.com/док/RefMan/5,5/о/дата и время-functions.html # function_week). – Jocelyn

ответ

10

Прямо из :

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

Вы можете изменить поведение WEEK, установив 2-й аргумент или 0 или 1 для 0-индексированных или 1-индексированных результатов соответственно.

+0

Спасибо за его работу – Farhan

+2

Аргумент '1' сохранит его с нулевым индексом, но изменит недельный отсчет на стандарт ISO, т. Е. Недели, начинающиеся в понедельник, первая неделя - это более трех дней в новом году. '2' является эквивалентом режима по умолчанию, при этом изменяется только нулевое индексирование. –

6

Установить второй параметр week на правое значение.

кавычки документы: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week

M F.day Range Week 1 is the first week … 
0 Sunday 0-53 with a Sunday in this year 
1 Monday 0-53 with more than 3 days this year 
2 Sunday 1-53 with a Sunday in this year 
3 Monday 1-53 with more than 3 days this year 
4 Sunday 0-53 with more than 3 days this year 
5 Monday 0-53 with a Monday in this year 
6 Sunday 1-53 with more than 3 days this year 
7 Monday 1-53 with a Monday in this year 

M = Mode 
F.day = First day of week 

Пример:

mysql> SELECT WEEK('2008-02-20',0); 
     -> 7 
mysql> SELECT WEEK('2008-02-20',1); 
     -> 8 
1

manual должен пролить свет на это.

default_week_format, вероятно, установлен по умолчанию 0, что означает, что неделя отсчитывается от нуля. Попробуйте изменить его на 1 или просто адаптируйте запрос к учетной записи для изменения.

1

Исследуя работу функции с помощью только простой Google оказался так: http://www.w3resource.com/mysql/date-and-time-functions/mysql-week-function.php

Короче говоря, вы можете назначить режим работы функции. То есть, в какой день недели начинается, и должна ли она начать в 0 или 1.

Например, SELECT WEEK(date_visit, 2) будет считаться с недели, начиная с воскресенья, и считая, начиная с 1.

Лучший удачи.

Смежные вопросы