我的mysql查询有问题,似乎无法找到任何相关内容。
我的表中有一个Date列,名为" date"。格式为" YYYY-MM-DD HH:MM:SS"。
我正在尝试计算几天内的所有数据,但仅限于日期介于08:30:00和18:30:00之间。
我知道如何使用HOUR(日期),但我不知道如何在查询中整合分钟。
我一直在考虑使用案例,但我对它不太确定。
任何帮助都会很棒。
祝你好运, Cheskq。
使用我一直在做的查询进行编辑:
select count(*), YEAR(date), MONTH(date), DAY(date)
from table
where YEAR(date) = 2014
AND HOUR(date) between 08 and 19
group by YEAR(date), MONTH(date), DAY(date);
答案 0 :(得分:2)
我建议减去30分钟的小时比较:
select count(*), YEAR(date), MONTH(date), DAY(date)
from table
where YEAR(date) = 2014 AND
HOUR(date - interval 30 minute) between 08 and 17
group by YEAR(date), MONTH(date), DAY(date);
请注意,上限为17,假设间隔在18:30:00之前结束(例如,在18:29:59.999)。
您也可以将其表达为:
select count(*), YEAR(date), MONTH(date), DAY(date)
from table
where YEAR(date) = 2014 AND
TIME(date) BETWEEN TIME('08:30:00') and TIME('18:30:00')
group by YEAR(date), MONTH(date), DAY(date);
答案 1 :(得分:2)
我知道,这比使用TIME()
函数时看起来更容易。
SELECT COUNT(*), DATE(`date`)
FROM table
WHERE TIME(`date`) BETWEEN '08:30' AND '18:30'
GROUP BY DATE(`date`)
如果你想要8:30但不包括18:30,请改用它。 BETWEEN
众所周知,当用于时间范围时会给出一个错误。
SELECT COUNT(*), DATE(`date`)
FROM table
WHERE TIME(`date`) >= '08:30'
AND TIME(`date`) < '18:30'
GROUP BY DATE(`date`)
答案 2 :(得分:0)
同时使用MINUTE(date)
:
WHERE (HOUR(date) = 8 AND MINUTE(date) >= 30) OR # 08:30 - 09:00
(HOUR(date) > 8 AND HOUR(date) < 18) OR # 09:00 - 18:00
(HOUR(date) = 18 AND MINUTE(date) <= 30) # 18:00 - 18:30
答案 3 :(得分:0)
尝试:
WHERE DATE_FORMAT(date, '%Y %h:%i') BETWEEN '2014 08:30' AND '2014 18:30'