2016-04-28 173 views
1

我需要从MySQL表中显示时间表。基本上每小时检索记录数。我TimeSigned栏是日期戳MySQL按小时间隔获取记录

登录

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)