2016-10-03 2 views
2

Можно ли получить в одном подстрелил COUNT (*) за каждый день за последние 15 дней, как я получаю за один день:счетчик SQL для каждого дня

SELECT count(*) as total from users where `user_date_accountcreated` BETWEEN '2016-10-03 00:00:00' AND '2016-10-03 23:59:59' 

Чтобы избежать одного запроса SQL за день.

Спасибо.

ответ

2

Просто использовать Функции даты в MySQL:

SELECT ... 
WHERE u_d_a_c BETWEEN (now() - INTERVAL 15 DAY) AND now() 
GROUP BY year(u_d_a_c), month(u_d_a_c), day(u_d_a_c) 
+1

Любая причина, по которой вы не делали «GROUP BY date (u_d_a_c)»? – PaulF

+0

Я тестировал 'SELECT COUNT (*) как итог WHERE user_date_accountcreated BETWEEN (сейчас() - INTERVAL 15 DAY) И теперь() GROUP BY year (user_date_accountcreated), month (user_date_accountcreated), day (user_date_accountcreated)' и у меня есть error, # 1064 - У вас есть ошибка в синтаксисе SQL; рядом с WHERE –

+0

вы забыли часть 'from' ... –

-1

Простой способ группировать по дате:

SELECT date_format(`user_date_accountcreated`, "%y%m%d"), count(*) as total from users 
where `user_date_accountcreated` BETWEEN '2016-09-18 00:00:00' AND '2016-10-03 23:59:59' 
GROUP BY date_format(`user_date_accountcreated`, "%y%m%d") 
+0

Да спасибо, что это хорошая идея, чтобы добавить а также добавьте date_format() в select. –

0

Попробуйте это:

SELECT DATE_FORMAT(user_date_accountcreated, '%Y-%m-%d'), count(*) AS total 

    FROM users 

    WHERE 

    DATEDIFF(CURDATE(), user_date_accountcreated) BETWEEN 1 AND 15 

     GROUP BY DATE_FORMAT(user_date_accountcreated, '%Y-%m-%d') 
Смежные вопросы