我有一个数据库表,其中包含以下字段:
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年左右的某个日期)。如果,我在查询中添加开头和结束日期,恐怕不会给我我需要的结果。
答案 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
请注意,条件中的时间部分以不同的格式指定 - 即数字,不带冒号和引号。