使用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)'