MySQL-Abfrage GROUP BY Tag / Monat / Jahr

Ist es möglich, eine einfache Abfrage zu machen, um zu zählen, wie viele Datensätze ich in einem bestimmten Zeitraum wie einem Jahr, Monat oder Tag habe, mit einem TIMESTAMP Feld, wie:

SELECT COUNT(id)
FROM stats
WHERE record_date.YEAR = 2009
GROUP BY record_date.YEAR

Oder sogar:

SELECT COUNT(id)
FROM stats
GROUP BY record_date.YEAR, record_date.MONTH

Um eine monatliche Statistik zu haben.

Danke!

Lösung
GROUP BY YEAR(record_date), MONTH(record_date)

Sehen Sie sich die Datums- und Zeitfunktionen in MySQL an.

Kommentare (4)
GROUP BY DATE_FORMAT(record_date, '%Y%m')

*Hinweis (in erster Linie an potenzielle Abwärtswähler). Im Moment ist dies vielleicht nicht so effizient wie andere Vorschläge. Dennoch lasse ich ihn als Alternative stehen, die auch dazu dienen kann, zu sehen, wie schnell andere Lösungen sind. (Denn man kann nicht wirklich schnell von langsam unterscheiden, bis man den Unterschied sieht.) Außerdem könnten im Laufe der Zeit Änderungen an der MySQL-Engine im Hinblick auf die Optimierung vorgenommen werden, so dass diese Lösung zu einem (vielleicht nicht so fernen) Zeitpunkt in der Zukunft in ihrer Effizienz mit den meisten anderen vergleichbar wird.

Kommentare (2)

Ich habe versucht, mit der 'WHERE' Anweisung oben, ich dachte, seine richtige, da niemand es korrigiert, aber ich war falsch; nach einigen Recherchen fand ich heraus, dass dies die richtige Formel für die WHERE-Anweisung ist, so dass der Code wie folgt wird:

SELECT COUNT(id)  
FROM stats  
WHERE YEAR(record_date) = 2009  
GROUP BY MONTH(record_date)
Kommentare (0)