Requête MySQL GROUP BY jour / mois / année

Est-il possible de faire une simple requête pour compter combien d'enregistrements j'ai dans une période de temps déterminée comme une année, un mois ou un jour, ayant un champ TIMESTAMP, comme :

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

Ou encore :

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

Pour avoir une statistique mensuelle.

Merci !

Solution
GROUP BY YEAR(record_date), MONTH(record_date)

Consultez les [fonctions de date et d'heure][1] de MySQL.

[1] : http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_month

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

Note (principalement à l'intention des personnes susceptibles de voter contre). Actuellement, cette solution n'est peut-être pas aussi efficace que d'autres suggestions. Néanmoins, je la laisse comme une alternative, et une, aussi, qui peut servir à voir comment les autres solutions sont plus rapides. (De plus, au fil du temps, des changements pourraient être apportés au moteur de MySQL en ce qui concerne l'optimisation, de sorte que cette solution, à un moment donné (peut-être pas si lointain), devienne tout à fait comparable à la plupart des autres en termes d'efficacité.

Commentaires (2)

J'ai essayé d'utiliser l'instruction 'WHERE&#39 ; ci-dessus, je pensais qu'elle était correcte puisque personne ne l'avait corrigée mais j'avais tort ; après quelques recherches, j'ai découvert que c'est la bonne formule pour l'instruction WHERE et le code devient donc le suivant :

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