Подсчет отрезков времени внутри заданного интервала - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д