Выберите счетную группу по дню даты и времени - PullRequest
0 голосов
/ 05 марта 2019

У меня есть таблица monitor, и одним из ее полей является дата типа Date.Пример записи:

id  |  date                    |  other fields.
1      2019-03-01 20:00:00 
2      2019-03-01 20:30:00 
3      2019-03-02 20:00:00
4      2019-03-01 10:00:00

Теперь я хочу посчитать количество записей за последние пять дней и вернуть карту, например:

day|  count
2019-03-01    3
2019-03-02    1

Мой sql похож на:

select day(date),count(*) from monitor group by day(date);

Так, как я должен построить в MySQL?Благодарю.Для меня проблема в том, чтобы сгруппировать по дням поля даты.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Я бы использовал date() и был бы очень осторожен с предложением where.Не используйте now(), потому что он также имеет компонент времени.

Вместо:

select date(date), count(*)
from monitor
where date >= curdate() - interval 5 day
group by date(date);
0 голосов
/ 05 марта 2019

Вы можете попробовать использовать функцию DATE_FORMAT.

select DATE_FORMAT(date,'%Y-%m-%d'),count(*) 
from monitor 
WHERE date between DATE_SUB(NOW(), - INTERVAL 5 DAY) AND NOW()
group by DATE_FORMAT(date,'%Y-%m-%d');
...