У меня есть таблица HTML, где я показываю записи, полученные в реальном времени с устройств.
Я хочу разрешить пользователям получать данные за промежуток времени между двумя датами, например, извлекать все данные между '2019-09-20' и '2019-09-25' ночью (с 22:00:00 до 06:00:00 следующего дня), где все данные хранятся в UTC.
Я могу заставить их работать с 06:00:00 UTC до 08:00:00UTC получает много результатов, но не для этого запроса (22:12:00 UTC до 08:00:00 UTC).
Этот запрос возвращает результаты:
SELECT d0_.id AS id_0
, d0_.uuid AS uuid_1
, d0_.datetime_utc AS datetime_utc_2
, d0_.macaddress AS macaddress_3
, d0_.channel_name AS channel_name_5
, d0_.device_id AS device_id_42
, d0_.country_id AS country_id_43
FROM detection d0_
JOIN device d4_
ON d0_.device_id = d4_.id
JOIN country c7_
ON d0_.country_id = c7_.id
WHERE (DATE(d0_.datetime_utc) BETWEEN '2019-09-20' AND '2019-09-25')
AND (TIME(d0_.datetime_utc) BETWEEN '06:00:00' AND '08:00:00')
ORDER
BY d0_.datetime_utc ASC;
Это результатжурнал возвращен на MySQL Workbench:
1000 row(s) returned
Теперь, если я выполню запрос, чтобы получить результаты между тем же интервалом дат и между (22:00:00 UTC) и (08:00:00 UTC):
SELECT d0_.id AS id_0, d0_.uuid AS uuid_1, d0_.datetime_utc AS datetime_utc_2, d0_.macaddress AS macaddress_3, d0_.channel_name AS channel_name_5, d0_.device_id AS device_id_42, d0_.country_id AS country_id_43
FROM detection d0_
INNER JOIN device d4_ ON d0_.device_id = d4_.id
INNER JOIN country c7_ ON d0_.country_id = c7_.id
WHERE (DATE(d0_.datetime_utc) BETWEEN '2019-09-20' AND '2019-09-25')
AND (TIME(d0_.datetime_utc) BETWEEN '22:00:00' AND '08:00:00')
ORDER BY d0_.datetime_utc ASC;
Запрос возвращает этот результат (хотя временной интервал больше первого):
0 row(s) returned
Я думаю, что это вызвано тем, что время начала больше, чемконечное время, но я не знаю, как ее решить.
Чтобы прояснить вопрос, запрос описывается так:
"Give me all the records received all the days at night (defined by the TIME sentence) between 2 specific dates (defined by DATE sentence)."
Спасибо,
Joaquв.