2013-08-12 22 views
9

Mam tabelę w MySQL, która pokazuje mi liczbę godzin rejestrowanych codziennie. Próbuję stworzyć widok, który pozwoli mi szybko grupować dane według bloków/zakresu dni. Najprostszy przypadek miałby miejsce co miesiąc, co nie byłoby trudne. Mogę wybrać datę jako "% y-% m", a następnie pogrupować według tej kolumny.Zapytanie MySQL do grupy według zakresu dat?

Ex:

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

To działa dobrze, jakbym właśnie grupowanie przez miesiąc. Ale moim problemem jest to, że muszę zgrupować od 13 dnia miesiąca do 12 dnia następnego miesiąca (np. Od 13 lipca do 12 sierpnia, od 13 sierpnia do 12 września itd.).

Czy istnieje prosty sposób na zrobienie czegoś takiego w jednym zapytaniu/widoku? Nie mogę wymyślić zapytania, które działa na moje potrzeby, nawet grając z różnymi kombinacjami pól daty.

+0

Czy potrzebujesz tylko dane związane z 13 lub 12? lub po prostu chcesz GRUPA Wg tego dnia? – Hituptony

Odpowiedz

20

Odejmij 13 dni i zrobić z grupowania robisz teraz:

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

12 dni myślę, ale +1 :) –

+0

Smack. Oczywiście. To zdecydowanie byłoby najłatwiejsze. W końcu udało mi się pracować ze skomplikowaną klauzulą ​​if, ale jest to o wiele prostsze i oczywiste! Dzięki! –

Powiązane problemy