Записи SQL в течение месяца с использованием метки времени Unix - PullRequest
1 голос
/ 28 мая 2011

Я пытаюсь вернуть количество записей за каждый месяц и сгруппировать результат по месяцу / году.

Схема выглядит примерно так:

id    title    timestamp

Я былискать вокруг, но я не могу получить результат, как я ожидаю.Спасибо.

Ответы [ 2 ]

8 голосов
/ 28 мая 2011

Отформатируйте метку времени, затем сгруппируйте ее.

Группировка по месяцам:

SELECT DATE_FORMAT(t.timestamp, "%Y-%m") AS "_Month", COUNT(*)
FROM yourtable as t
GROUP BY _Month;

Группировка по годам:

SELECT DATE_FORMAT(t.timestamp, "%Y") AS "_Year", COUNT(*)
FROM yourtable as t
GROUP BY _Year;

Если поле временной метки хранится как unixtime-значение, просто оберните FROM_UNIXTIME() вокруг поля:

SELECT DATE_FORMAT(FROM_UNIXTIME(t.timestamp), "%Y") AS "_Year", COUNT(*)
FROM yourtable as t
GROUP BY _Year;
4 голосов
/ 28 мая 2011
SELECT YEAR(`timestamp`) AS Y, MONTH(`timestamp`) AS M, COUNT(1) AS C
FROM that_table
GROUP BY YEAR(`timestamp`), MONTH(`timestamp`)
ORDER BY YEAR(`timestamp`), MONTH(`timestamp`)
...