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.
Über den Autor
Der Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen
Ähnliche Themen
MySQL: GROUP BY Tag, Monat oder Jahr
Frage | 1 Antwort
Delphi/Lazarus: Jahr, Monat und Tag in DateTime-Format konvertieren
Frage | 1 Antwort
Delphi/Lazarus: Tag, Monat und Jahr aus DateTime-Format extrahieren
Frage | 1 Antwort
Delphi/Lazarus: TDateTime aus Tag, Monat, Jahr, Stunden, Minuten und Sekunden generieren
Frage | 1 Antwort
Warum hat ausgerechnet der Februar 28 Tage?
Frage | 3 Antworten
CSS: Links nur unterstreichen wenn Maus darüber fährt
Frage | 1 Antwort
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.