我需要只能在指定时间之间提取数据,而不管日期范围有多大。例如,仅在日期范围内的每天10:00至11:00之间检索记录。MySQL TIME函数意外的结果
我想我已经确定了它,直到用户指定了一个跨越午夜的时间并且它没有返回任何数据。
这是我的查询没有返回数据(使用日期和时间函数):
SELECT
an.descr_agente as Agent,
COUNT(if(ql.queue IN (9100, 9102, 9104),1, null)) as UK,
COUNT(if(ql.queue IN (9200, 9202, 9204),1, null)) as AU,
COUNT(if(ql.queue IN (9400, 9402, 9404),1, null)) as CA
FROM queue_log ql
LEFT JOIN agenti_noti an
ON ql.agent = an.nome_agente
WHERE ql.partition = 'P001'
AND DATE(from_unixtime(ql.time_id)) BETWEEN '2017-10-03' AND '2017-10-04'
AND TIME(from_unixtime(ql.time_id)) BETWEEN '16:00' AND '01:01'
AND ql.verb IN ('COMPLETECALLER','COMPLETEAGENT','TRANSFER')
AND an.descr_agente IS NOT NULL
GROUP BY an.descr_agente
如果我将其更改为下面,它的工作原理,但当然会有一旦用户的增加不正确的数据日期范围超过1天。
SELECT
an.descr_agente as Agent,
COUNT(if(ql.queue IN (9100, 9102, 9104),1, null)) as UK,
COUNT(if(ql.queue IN (9200, 9202, 9204),1, null)) as AU,
COUNT(if(ql.queue IN (9400, 9402, 9404),1, null)) as CA
FROM queue_log ql
LEFT JOIN agenti_noti an
ON ql.agent = an.nome_agente
WHERE ql.partition = 'P001'
AND from_unixtime(ql.time_id) BETWEEN '2017-10-03 16:00' AND '2017-10-04 01:01'
AND ql.verb IN ('COMPLETECALLER','COMPLETEAGENT','TRANSFER')
AND an.descr_agente IS NOT NULL
GROUP BY an.descr_agente
我假设TIME函数不会自动重叠到第二天。我应该怎么做才能正常工作?
啊我希望我不会像那样分裂它。用户界面是HTML/PHP和Javascript,我猜想我只需添加更多的检查来添加它。 – Stephen