MySQL Query GROUP BY dag / maand / jaar

Is het mogelijk om een eenvoudige query te maken om te tellen hoeveel records ik heb in een bepaalde periode, zoals een jaar, maand of dag, met een TIMESTAMP veld, zoals:

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

Of zelfs:

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

Om een maandelijkse statistiek te hebben.

Bedankt!

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

Kijk eens naar de datum en tijd functies in MySQL.

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

Note (in de eerste plaats aan potentiële downvoters). Op dit moment is dit misschien niet zo efficiënt als andere suggesties. Toch laat ik het als een alternatief, en een, ook, dat kan dienen om te zien hoe sneller andere oplossingen zijn. (Want je kunt niet echt snel van langzaam onderscheiden totdat je het verschil ziet.) Ook zouden, naarmate de tijd verstrijkt, veranderingen kunnen worden aangebracht aan MySQL's engine met betrekking tot optimalisatie zodat deze oplossing, op een bepaald (misschien, niet zo ver weg) punt in de toekomst, behoorlijk vergelijkbaar wordt in efficiëntie met de meeste anderen.

Commentaren (2)

Ik probeerde het 'WHERE' statement hierboven te gebruiken, ik dacht dat het correct was aangezien niemand het corrigeerde maar ik had het mis; na wat zoeken vond ik uit dat dit de juiste formule is voor het WHERE statement zodat de code als volgt wordt:

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