2013-08-12 2 views
9

У меня есть таблица в MySQL, которая показывает мне количество часов, зарегистрированных ежедневно. Я пытаюсь создать представление, которое позволит мне быстро группировать свои данные по блокам/диапазону дней. Простейший случай будет проводиться ежемесячно, что было бы непросто. Я мог бы просто выбрать дату как «% y-% m», а затем сгруппировать по этому столбцу.Запрос MySQL для группировки по дате?

Ex:

select time_logged, date_format(start_date, '%Y-%m') AS `month_logged` 
from work_log 
group by month_logged 

Это отлично работает, если я просто группировать по месяцам. Но моя проблема в том, что мне нужно сгруппироваться с 13-го числа до 12-го числа следующего месяца (например: 13 июля - 12 августа, 13 августа - 12 сентября и т. Д.).

Есть ли простой способ сделать что-то подобное в одном запросе/представлении? Я не могу придумать запрос, который работает для моих нужд, даже играя с разными комбинациями полей даты.

+0

вам нужно только данные, связанные с 13-го или 12-ли? или вы просто хотите GROUP BY этот день? – Hituptony

ответ

20

Вычтите 13 дней и сделать группировку вы делаете сейчас:

select time_logged, 
     date_format(start_date - interval 12 day, '%Y-%m') AS `month_logged` 
from work_log 
group by month_logged; 
+0

12 дней, я думаю, но +1 :) –

+0

Smack. Конечно. Это определенно будет проще всего. Я, наконец, получил работу со сложным предложением if, но это гораздо более прямолинейно и очевидно! Благодаря! –

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