Détails
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 !
606
3
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
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é.
J'ai essayé d'utiliser l'instruction 'WHERE' ; 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 :