我需要显示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
答案 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)