MySQL vaicājums GROUP BY diena / mēnesis / gads

Vai ir iespējams izveidot vienkāršu vaicājumu, lai saskaitītu, cik ierakstu man ir noteiktā laika periodā, piemēram, gadā, mēnesī vai dienā, izmantojot TIMESTAMP lauku, piemēram:

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

Vai pat:

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

Lai iegūtu ikmēneša statistiku.

Paldies!

Risinājums
GROUP BY YEAR(record_date), MONTH(record_date)

Pārbaudiet datuma un laika funkcijas MySQL.

Komentāri (4)
GROUP BY DATE_FORMAT(record_date, '%Y%m')

Piezīme (galvenokārt potenciālajiem balsotājiem, kas vēlas samazināt balsojumu). Pašlaik tas var nebūt tik efektīvs kā citi ieteikumi. Tomēr es to atstāju kā alternatīvu, turklāt tādu, kas var kalpot, lai redzētu, cik ātrāki ir citi risinājumi. (Jo jūs nevarat atšķirt ātru no lēna, kamēr neredzat atšķirību.) Turklāt, laikam ejot, MySQL dzinējā varētu tikt veiktas izmaiņas attiecībā uz optimizāciju, lai šis risinājums kādā (iespējams, ne tik tālā) nākotnes brīdī kļūtu pilnīgi salīdzināms efektivitātes ziņā ar lielāko daļu citu..

Komentāri (2)

Es mēģināju, izmantojot 'WHERE' paziņojums iepriekš, Es domāju, ka tā ir pareiza, jo neviens to labot, bet es kļūdījos; pēc dažiem meklējumiem es uzzināju, ka tas ir pareizā formula WHERE paziņojumu, lai kods kļūst šādi:

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