:: urbansheep (urbansheep) wrote,
:: urbansheep
urbansheep

  • Music:

[ L ] Группировка по timestamp в MySQL

Кукуца нет, спросить некого, приходится терзать гугл — словно сидишь у моря, бросаешь в него сапог кирзовый на леске, забитый пенопластовыми шариками, смотришь, что за него зацепится, и вытягиваешь. И вытя-я-ягиваешь...

Ситуация: есть таблица записей с таймстампами. Надо получить разбивку по дням/месяцам/годам. То есть делать такой простенький GROUP BY. Но возник сразу вопрос — а как это делать GROUP BY, если в таймстампе у нас ещё есть часы, минуты и секунды? Великий Коллективный Разум в лице веба, проиндексированного Гуглом, даёт нам ответ: надо сначала забубенить перевод таймстампов в какой-нибудь более простой вариант, и по нему группировать. Вопрос производительности снимется только тестированием.

«

to answer your question: yes it's possible. it's DISTINCT and/or group by which will help you. additionally, FROM_UNIXTIME(date, '%M') was named by yourself.

SELECT FROM_UNIXTIME(date, '%Y-%M') AS dt, COUNT(data) AS cnt FROM blogs group by dt ORDER by dt DESC

should do the trick for the current year for each month. for the other years, you have to modify your query a bit:

SELECT FROM_UNIXTIME(date, '%Y') AS dt, COUNT(data) AS cnt FROM blogs group by dt ORDER by dt DESC

you can then code the WHERE-clause yourself to minimize the datastock which needs to be queried at all. i optionally put cnt into the query which contains the number of entries in that month / year.

»


Subscribe
  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments