MySQL 按小时间隔获取记录

MySQL get records by hour interval

我需要显示 MySQL table 的时间线。基本上每小时检索记录数。我的 TimeSigned 列是 DateStamp

登录

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

我期待它 return 计数为 2(即 1 和 2 记录在 5-6 时间范围内)但它带回 0。

我在这里创建了一个 sqlfiddle SQL Fiddle

在第一个条件中使用 =。 5 和 6 之间没有任何东西,所以它会给出计数 0

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

HOUR() return是小时部分,所以它是整数。 没有大于5小于6的整数。 我想你只想寻找小时等于 5

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

或者,如果您愿意,您可以 return 计算每小时

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