MySQL Запрос по учету рабочего времени
HELP! Есть таблица с двумя столбцами: datetime (дата и время срабатывания датчика), counter (код сработавшего датчика). Требуется посчитать количество срабатываний каждого датчика за ночную смену с 20.00 первого дня до 8.00 утра следующего дня. Дневную смену считаю так:
MySQL:
SELECT DATE(datetime) as date, counter, COUNT(counter) as count
FROM table
WHERE DATE(datetime)>='2020-03-20' and (TIME(datetime)>'08:00:00' and TIME(datetime)<'20:00:00')
GROUP BY counter, DATE(datetime)
ORDER BY date, counter;
Заранее спасибо!
Ответы (1 шт):
Автор решения: Alex R.
→ Ссылка
Без работы с датами в виде строк и без привязки к конкретному дню.
SELECT
DATE(datetime) as date,
counter,
COUNT(counter) as count
FROM table
WHERE HOUR(datetime + INTERVAL 12 HOUR) BETWEEN 8 AND 20
GROUP BY counter, DATE(datetime)
ORDER BY date, counter;
Сдвинул смену в один день (+12 часов), чтобы использовать BETWEEN
Пример: статистика за прошедшую неделю от текущего дня
SELECT
DATE(datetime) as date,
counter,
COUNT(counter) as count
FROM table
WHERE datetime >= NOW() - INTERVAL 7 DAY
AND HOUR(datetime + INTERVAL 12 HOUR) BETWEEN 8 AND 20
GROUP BY counter, DATE(datetime)
ORDER BY date, counter;