17 Stimmen

MySQL: Timestamp Spalte nach Monat und Jahr gruppieren

Tipp von Computer Experte | 22.05.2012 um 12:13

In Blogs oder Foren sehen wir oft an einer Seite eine Liste mit Links, die anzeigen, in welchem Monat und Jahr wie viele Beiträge geschrieben wurden. Wenn man auf einen dieser Links klickt bekommt man die entsprechenden Artikel und Beiträge aus genau diesem Monat.

Wie aber bestimmt man die Anzahl von Beiträgen je Monat?

Schließlich haben wir die Beiträge in unserer MySQL Tabelle zeitlich mit einer TIMESTAMP oder DATE Spalte eingeordnet und ein "GROUP BY datespalte" würde uns nicht die Anzahl der Artikel pro Monat ausgeben sondern die Anzahl der Artikel je Tag bwz spezifischen Datum - und das wollen wir nicht.

Der Schlüssel liegt in dem Benutzen der MySQL-Funktionen YEAR() und MONTH(), die uns Jahr und Monat einer TIMESTAMP-Spalte zurückgeben können. Unser GROUP BY sieht also so aus:

GROUP BY YEAR(dat), MONTH(dat)

Damit gruppieren wir nach dem Jahr und nach dem Monat der Spalte "dat". Ein Beispiel für ein komplettes SELECT haben wir hier:

SELECT COUNT(id), RPAD('0', 2, MONTH(dat)), YEAR(dat) FROM tabelle 
GROUP BY YEAR(dat), MONTH(dat);

Demnach zählen wir die ID oder eine andere eindeutige Zuordnung der Datensätze und lesen auch gleich Monat und Jahr der Beiträge aus. Das RPAD sorgt dafür, dass wir unseren Monat gleich in zwei Zeichen mit führenden Nullern auslesen können und nicht erst anschließend formatieren müssen.

Ein mögliches Ergebnis dieser Abfrage wäre:

ANZAHL   MONAT   JAHR
12       01      2012
37       02      2012
83       03      2012
78       04      2012
95       05      2012

Mit PHP lässt sich das ganze dann einfach so formatieren, dass wir eine Darstellung wie "01/2012 (12)" oder wie man es möchte bekommen und das ganze mit der Suchfunktion nach Artikeln verlinken können.

AntwortenPositivNegativ

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.