Подсчет отрезков времени внутри заданного интервала - MySQL

Узнай цену своей работы

Формулировка задачи:

Добрый день, очень нужна помощь, я новичок в SQL и не могу составить корректный запрос есть таблица
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
т.е. человек включил систему, потом в течении дня становился на паузу, рабочий день с 10:20 до 19:00 включить/выключить систему или встать/выйти с паузы можно за этим интервалом, как составить запрос, чтобы посчитать время работы (или паузы именно в промежутке между 10:20 и 19:00?

Решение задачи: «Подсчет отрезков времени внутри заданного интервала»

textual
Листинг программы
SELECT (SUM(UNIX_TIMESTAMP(`stop`) -  UNIX_TIMESTAMP(`start`)) /3600) AS workingHours FROM `working`

Объяснение кода листинга программы

В данном коде происходит подсчет отрезков времени внутри заданного интервала, выделяя количество рабочих часов.

  1. SELECT — команда для выбора данных из таблицы.
  2. (SUM(UNIX_TIMESTAMP(stop) — UNIX_TIMESTAMP(start)) /3600) — вычисляемое выражение, которое получает разницу между временем окончания и временем начала в секундах, затем делит это значение на 3600 (количество секунд в часе) для получения количества часов.
  3. AS workingHours — псевдоним для вычисляемого выражения, который дает ему имя workingHours.
  4. FROM working — указывает, что данные должны быть выбраны из таблицы с именем working.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы