Начало недели с использованием MySQL - PullRequest
0 голосов
/ 02 октября 2011

Если у меня MySQL-запрос, подобный этому, сумма слов в неделю суммируется:

SELECT 
  SUM(`city`), 
  SUM(`officers`), 
  SUM(`uk`), 
  SUM(`wednesday`), 
  DATE_FORMAT(`dateTime`, '%d/%m/%Y') 
FROM myTable 
WHERE dateTime BETWEEN '2011-09-28 18:00:00' AND '2011-10-29 18:59:00' 
GROUP BY WEEK(dateTime)

Результаты, полученные MySQL, принимают первое значение столбца dateTime, в данном случае 28/09/2011быть субботой.

Можно ли настроить запрос в MySQL таким образом, чтобы он отображал дату, с которой начинается неделя, даже если нет доступных данных, так что для вышеупомянутого 2011-09-28 будетзаменить на 2011/09/26 вместо?То есть дата начала недели, являющаяся понедельником.Или лучше настроить даты программно после выполнения запроса?

Столбец dateTime имеет формат 2011/10/02 12: 05: 00

1 Ответ

0 голосов
/ 02 октября 2011

Возможно сделать это в SQL, но было бы лучше сделать это в программном коде, так как это было бы более эффективно и проще. Кроме того, хотя MySQL принимает ваш запрос, это не совсем имеет смысла - у вас есть DATE_FORMAT(dateTime, '%d/%m/%Y') в списке полей выбора, в то время как вы группируете по WEEK(dateTime). Это означает, что движок БД должен выбрать случайную дату из текущей группы (недели) для каждой строки. То есть, у вас есть записи для 27.09.2011, 28.09.2011 и 29.09.2011 - все они попадают на одну и ту же неделю, поэтому в конечном наборе результатов для этих трех записей создается только одна строка. Теперь, какую дату из этих трех нужно выбрать для вызова DATE_FORMAT ()? Ответ будет несколько проще, если в запросе есть ORDER BY, но все еще не имеет смысла использовать поля / выражения в списке полей, которых нет в GROUP BY или которые не являются агрегатами. Вы действительно должны вернуть номер недели в списке выбора (вместо вызова DATE_FORMAT), а затем в своем коде рассчитать начальную и конечную даты из него.

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