2013-08-12 14 views
9

Ho una tabella in MySQL che mi mostra il numero di ore registrate su base giornaliera. Sto cercando di creare una vista che mi consenta di raggruppare rapidamente i miei dati per blocchi/intervallo di giorni. Il caso più semplice sarebbe su base mensile che non sarebbe difficile. Potrei semplicemente selezionare la data come "% y-% m" e quindi raggruppare per quella colonna.MySQL Query da raggruppare in base all'intervallo di date?

Es:

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

che funziona bene se io sono solo raggruppandoli per mese. Ma il mio problema è che ho bisogno di raggruppare dal 13 del mese al 12 del mese successivo (es: 13 luglio-12 agosto, 13 agosto-12 settembre, ecc.).

C'è un modo semplice per fare qualcosa del genere in una singola query/vista? Non riesco a trovare una query che funzioni per i miei bisogni, anche giocando con le diverse combinazioni di campi data.

+0

Avete bisogno solo i dati associati con il 13 ° o il 12 °? o vuoi solo GROUP BY questo giorno? – Hituptony

risposta

20

Sottrarre 13 giorni e fare il raggruppamento che si sta facendo ora:

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

12 giorni penso, ma +1 :) –

+0

Smack. Ovviamente. Sarebbe sicuramente più facile. Alla fine ho funzionato con una clausola if complicata, ma questo è molto più semplice ed evidente! Grazie! –

Problemi correlati