MySQL按小时间隔获取记录

时间:2016-04-28 04:53:27

标签: mysql timeline

我需要显示MySQL表的时间线。基本上每小时检索记录数。我的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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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)