MySQL group by year month day: come eseguire una group by per anno, giorno o mese con MySQL? In questo articolo vedremo come fare assieme in meno di 5 minuti!
Immagina di voler eseguire una SELECT dove hai un campo di tipo timestamp e vuoi raggruppare i risultati per giorno, mese, oppure anno insomma: vuoi fare una group by year, by month oppure by day.
In questo articolo cercheremo di capire assieme come si possa fare, ma prima è giusto dirti chi sono.
Mi chiamo Lorenzo Neri e sono un informatico: questo blog nasce con l’idea di aiutare persone come te nel mondo della programmazione, ma soprattutto con l’idea di condividere le soluzioni a problemi nati nel corso della mia carriera lavorativa.
E quale miglior modo se non quello di realizzare articoli come questo?
Incominciamo.
Group by year month day in MySQL: come si può fare?
Ormai l’obiettivo di questo articolo l’abbiamo capito, ma facciamo un esempio concreto: sennò non ci raccapezziamo.
Immagina di avere la seguente query:
SELECT *
FROM persone
WHERE data_di_nascita.YEAR > 1993
Si tratta di una tabella semplice dove il campo “data_di_nascita” è un timestamp a tutti gli effetti. Tra l’altro, parlando di esempi, devi sapere che ne puoi trovare tanti sul mio blog: ho creato una categoria tutta fatta di articoli su SQL, la trovi qui!
Ciò detto, la clausola “GROUP BY” di cui abbiamo bisogno basta strutturarla come segue:
GROUP BY YEAR(data_di_nascita) // in base all'anno
GROUP BY MONTH(data_di_nascita) // in base al mese
GROUP BY DAY(data_di_nascita) // in base al giorno
In conclusione la query per fare la group by in base ad anno (year), mese (month) oppure giorno (day), dipende in base ai tre operatori che ti ho lasciato qui sopra.
E la query completa, possiamo renderla anche un po’ più parametrica in base al nome della tabella e della colonna su cui vuoi agire:
SELECT *
FROM nome_tabella
GROUP BY YEAR(colonna_timestamp_in_questione) // in base all'anno
GROUP BY MONTH(colonna_timestamp_in_questione) // in base al mese
GROUP BY DAY(colonna_timestamp_in_questione) // in base al giorno
A conclusione di nuovo (sì, scusami per il refuso ma è necessario 😛 ), se volessi scoprire altre funzionalità MySQL relative alle potenzialità dei timestamp puoi fare un bel click qui!