Подсчет отрезков времени внутри заданного интервала - MySQL
Формулировка задачи:
Добрый день, очень нужна помощь, я новичок в SQL и не могу составить корректный запрос
есть таблица
т.е. человек включил систему, потом в течении дня становился на паузу, рабочий день с 10:20 до 19:00 включить/выключить систему или встать/выйти с паузы можно за этим интервалом, как составить запрос, чтобы посчитать время работы (или паузы именно в промежутке между 10:20 и 19:00?
| id | type | start | stop |
| 1 | avaliable | 18-01-17 10:05:00 | 18-01-17 10:25:00 |
| 2 | pause | 18-01-17 10:30:00 | 18-01-17 10:10:45 |
| 3 | avaliable | 18-01-17 10:45:00 | 18-01-17 16:25:00 |
| 4 | pause | 18-01-17 16:25:00 | 18-01-17 16:50:00 |
| 5 | avaliable | 18-01-17 16:50:00 | 18-01-17 18:40:00 |
| 6 | pause | 18-01-17 18:40:00 | 18-01-17 19:10:00 |
Решение задачи: «Подсчет отрезков времени внутри заданного интервала»
textual
Листинг программы
SELECT (SUM(UNIX_TIMESTAMP(`stop`) - UNIX_TIMESTAMP(`start`)) /3600) AS workingHours FROM `working`
Объяснение кода листинга программы
В данном коде происходит подсчет отрезков времени внутри заданного интервала, выделяя количество рабочих часов.
SELECT— команда для выбора данных из таблицы.(SUM(UNIX_TIMESTAMP(stop) — UNIX_TIMESTAMP(start)) /3600)— вычисляемое выражение, которое получает разницу между временем окончания и временем начала в секундах, затем делит это значение на 3600 (количество секунд в часе) для получения количества часов.AS workingHours— псевдоним для вычисляемого выражения, который дает ему имяworkingHours.FROM working— указывает, что данные должны быть выбраны из таблицы с именемworking.