使用DATETIME mysql查询日期之间的时间范围

使用DATETIME mysql查询日期之间的时间范围,mysql,sql,datetime,Mysql,Sql,Datetime,我有一个数据库表,其中包含如下字段: TIME(Datetime) Update_ID 2013-11-25 05:00:14 XC3 2013-11-25 06:00:13 XC4 2013-11-25 06:00:19 XC5 2013-12-25 23:00:14 XC6 2013-12-25 24:00:00 XC7 所以假设我想找到更新的趋势,知道一天中哪个时段有特定数量的更新,我最初想到的是这样做: SELECT COUNT(T

我有一个数据库表,其中包含如下字段:

TIME(Datetime)        Update_ID
2013-11-25 05:00:14     XC3
2013-11-25 06:00:13     XC4
2013-11-25 06:00:19     XC5
2013-12-25 23:00:14     XC6
2013-12-25 24:00:00     XC7
所以假设我想找到更新的趋势,知道一天中哪个时段有特定数量的更新,我最初想到的是这样做:

SELECT COUNT(TIME) FROM  table WHERE TIME between '06:00:00' and '12:00:00' 
但这不起作用,因为我认为,由于日期没有与时间一起添加,因此添加了日期的默认值(1970年左右的某个日期)。如果在我的查询中添加开始日期和结束日期,恐怕它不会提供我需要的结果。

使用

WHERE HOUR(TIME)...GROUP BY DAY(TIME) 

如果您有超过1天的时间

您是正确的,问题是当您没有指定日期时,会添加一个默认日期

可以使用从日期提取时间,如下所示:

SELECT COUNT(*)
FROM  mytable
WHERE EXTRACT(HOUR_SECOND from TIME) between 60000 and 120000
请注意,条件中的时间部分是以不同的格式指定的,即作为数字,不带冒号和引号


.

其中小时(时间)…如果您有超过1个小时,请按天(时间)分组day@Mihai作为答案回答,并获得学分。它很管用,谢谢!顺便说一句,我只使用了小时(时间),它返回了一个数字29110,当我添加GROUP BY DAY(时间)时,我得到了15行返回的不同值,是这15行的总和产生了上述值吗?顺便说一句,我从7月份开始查询,如果GROUP BY每天都显示这个结果,我不应该返回超过15行吗?感谢您获得表中每天时间条件介于“06:00:00”和“12:00:00”之间的所有行。如果需要,您可以按月(时间),…年(时间)添加组。谢谢。只是一个补充问题。有没有更好的选择?我认为在“06:00:00”到“12:00:00”之间的比赛中,它似乎跳过了以“06:00:01”开头的记录。如果没有以“06:00:00”开头的记录,则返回零。我认为应该从该起始值给出范围?WHERE HOUR(TIME)>='06:00:00'和HOUR(TIME)'06:00:00'和'12:00:00'之间的时间(TIME)'