我正在尝试为学校出勤率创建高图表时间表线图,但结果中出现的记录略有不同。

存储出勤率的表是:

+++++++++++++++++++++++++++++++++
Id | Date     |  AttendTime(varchar)
--------------------------------
1  | 20160815 |  7:51
2  | 20160815 |  7:53
3  | 20160815 |  8:01
-------------------------------


我正在使用以下sql来获取数据

SELECT
     COUNT(Id) as Total
FROM Attendance
     WHERE Date = '20160815' AND
           HOUR(STR_TO_DATE(AttendTime, '%H:%i'))  <= HOUR(STR_TO_DATE('7:30', '%H:%i'))


我应该得到0,因为没有,但是我得到3条记录。我究竟做错了什么?
谢谢。

最佳答案

如果您只是想查看7:30之前的出勤人数,则不需要HOUR函数:

SELECT
     COUNT(Id) as Total
FROM Attendance
     WHERE Date = '20160815'
     AND STR_TO_DATE(AttendTime, '%H:%i') <= STR_TO_DATE('7:30', '%H:%i')

09-15 23:41