@ReydAn913

MySQL. Как регистрировать разницу времени между изменениями состояния?

Здравствуйте!
Я новичок в программировании и только учусь, по-этому если вопрос будет глупым - Вы уж извините.
Для развития навыков и освоения базы данных, друг подкинул задание. На первый взгляд простое, но коснувшись - попал в тупик.
Суть вот в чем - нужно сделать базу данных оборудования, которая б записывала время вкл и выкл (меняла состояние). Но не просто логировалась, а и выводила между этими временами разницу (промежуток. Общее проработанное время).

Т.е. 1 станок включился в 00:00, выключился в 00:17. (Проработал 17 минут), включился в 00:20 (простоял 3 минуты).... и т.д.
И так на несколько.
Как правильно это осуществить ?
Самый реализуемый способ - на каждый станок вести отдельную таблицу и сравнивать значения, но это как-то неправильно... Станков много(
А больше вариантов в голову не приходит.
Подскажите, пожалуйста.
P.S. Извините, никакого кода не писал, так как писать то по сути и нечего. Я на этапе продумывания структуры базы.
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
coderisimo
@coderisimo
Зачем же городить такой огород ? 2 Таблицы :
1) станок_id, start_time, end_time , duration. (это статистика работы станков)
2) станок_id , название станка, доп инфо если нужно. (это таблица самих станков)

При включении записываем время старта . При выключении записываем время стопа и продолжительность - "вычитаем из стопа старт" :) .

Далее можем легко получить статистику
1) по каждому станку (выборка по ID)
2) По периоду (выборка время старта >= начало нужного периода , время стопа <= конец нужного периода ).
Комбинируя фильтр 1 и 2 получаем статистику для нужного станка за нужный период.

Какой язык используете в проекте?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Станок_id действие_id время.
1_станок включился  00:00
1_станок выключился 00:17

Дальше сам.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если нужен полный лог, то таки да, записываете каждое включение и выключение. Дополнительно при выключении обновляете общее время работы в отдельной таблице.
Если полного лога не надо, то просто записываете время включения, при выключении обновляете общее время работы и обнуляете (null) время включения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы