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

时间:2013-12-28 12:09:22

标签: 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(TIME) FROM  table WHERE TIME between '06:00:00' and '12:00:00' 

但这不起作用,因为我认为由于日期没有添加时间,因此添加了日期的默认值(1970年左右的某个日期)。如果,我在查询中添加开头和结束日期,恐怕不会给我我需要的结果。

2 个答案:

答案 0 :(得分:2)

使用

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

如果您有超过1天的

答案 1 :(得分:2)

你是对的,问题是当你没有指定日期时,会添加一个默认日期。

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

SELECT COUNT(*)
FROM  mytable
WHERE EXTRACT(HOUR_SECOND from TIME) between 60000 and 120000

请注意,条件中的时间部分以不同的格式指定 - 即数字,不带冒号和引号。

Demo on SqlFiddle