2016-04-28 3 views
1

Мне нужно показать временную шкалу из таблицы MySQL. В основном извлекайте количество записей за каждый час. Моя TimeSigned колонка DATESTAMPMySQL получает записи по часовому интервалу

Войти

Id TimeSigned   MarkedBy 
1. 2016-03-14 05:12:17 James 
2. 2016-03-14 05:30:10 Mark 
3. 2016-03-14 06:10:00 James 
4. 2016-03-14 07:30:10 Mary 

Я использую следующий запрос, но это приносит неправильные результаты.

SELECT COUNT(Id) From Logins WHERE HOUR(TimeSigned) > 5 AND HOUR(TimeSigned) < 6 

Я ожидал, чтобы вернуть счетчик 2 (то есть 1 и 2 записи находятся в пределах 5-6 раз), но возвращает 0.

Я создал sqlfiddle здесь SQL Fiddle

ответ

1

Используйте = в своем первом состоянии. нет ничего между 5 и 6, поэтому он будет давать счет 0

SELECT COUNT(Id) From Logins WHERE HOUR(TimeSigned) >= 5 AND HOUR(TimeSigned) < 6 
1

HOUR() возвращает часть часа, так что это целые числа. Там нет целых чисел, которые больше 5 и меньше 6. Я думаю, что вы хотите, чтобы просто смотреть на час равны 5

SELECT COUNT(Id) From Logins WHERE HOUR(TimeSigned) = 5 

Или, если вы хотите, вы можете вернуть счетчики на каждый час по Производство

SELECT COUNT(Id) as Count,HOUR(TimeSigned) as Hour From Logins GROUP BY HOUR(TimeSigned)