日付範囲の大きさにかかわらず、指定した時刻間にのみデータを取得できる必要があります。たとえば、日付範囲内の毎日10時から11時の間のレコードのみを取得します。MySQL TIME関数の予期しない結果
ユーザーが深夜を過ぎ、データを返さないように指定するまで、私はそれを釘付けにしていたと思いました。
これは(DATEおよび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機能が自動的に次の日に重複しないと仮定します。これが正しく機能するにはどうすればよいですか?
ああ、私はそれを分割する必要はないと思っていました。 UIはHTML/PHP&Javascriptです。追加するチェックを追加するだけです。 – Stephen