Я не очень разбираюсь в SQL, поэтому, надеюсь, кто-то здесь может мне помочь.Попытка получить 24 часа данных из SQL
У меня столбец date_of_post в моей таблице, который выглядит так (пример) 2015-08-31 11:00:00
.
Я использую INTERVAL 1 DAY
, чтобы получить последние 24 часа. Однако он возвращает больше, чем последние 24 часа. Это запрос, который я использую для извлечения мои данные
SELECT DATE_ADD(date(t.date_of_post),
INTERVAL hour(t.date_of_post) HOUR) AS dateTime,
count(*) as entries
FROM `soc_stat` t
WHERE `main_tag` = 'morgenmad'
AND t.date_of_post > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY date(t.date_of_post), hour(t.date_of_post)
И это возвращает:
2015-08-31 11:00:00 = 11
2015-08-31 12:00:00 = 2
2015-08-31 13:00:00 = 3
2015-08-31 14:00:00 = 3
2015-08-31 15:00:00 = 1
2015-08-31 16:00:00 = 3
2015-08-31 17:00:00 = 2
2015-08-31 19:00:00 = 1
2015-09-01 04:00:00 = 1
2015-09-01 05:00:00 = 3
2015-09-01 06:00:00 = 9
2015-09-01 07:00:00 = 33
2015-09-01 08:00:00 = 38
2015-09-01 09:00:00 = 29
2015-09-01 10:00:00 = 13
2015-09-01 11:00:00 = 12
2015-09-01 12:00:00 = 6
2015-09-01 13:00:00 = 5
Я не понимаю, почему 11:00:00
, 12:00:00
и 13:00:00
существуют в 2015-08-31
и 2015-09-01
. Разве он не должен возвращать только последние 24 часа?
Проверьте часовой пояс вашего mysql. Он может содержать значение по умолчанию вместо фактического часового пояса. –
Несоответствие выбранным столбцам и группа по столбцам. – jarlh