Найти разницу во времени для полей в формате TIME - MySQL

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

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

Уважаемые специалисты, добрый день! Подскажите пожалуйста как можно решить такую задачу: Есть таблица с данными, в которой 3 поля Дата вылета, Время вылета и Время посадки, поля с временем хранится в формате TIME, мне нужно узнать суммарный налет за месяц. Для этого я должен от Время посадки отнять Время вылета

1

Дата вылета - 23.08.2016 Время вылета - 14:00 Время посадки - 15:00 В первом случае всё будет правильно. 15:00 - 14:00 = 1

2

Дата вылета - 23.08.2016 Время вылета - 23:00 Время посадки - 1:00 Во втором я получу неправильное время. 1:00 - 23:00 = -22

3

Дата вылета - 23.08.2016 Время вылета - 00:00 Время посадки - 00:00 В третем случае тоже не работает. 00:00 - 00:00 = 0 Я думаю над такими вариантами: 1. Считать разницу с помощью PHP и записывать в дополнительное поле. 2. Добавить поле с датой прибытия и в MySQL объединять поля (если возможно). 3. Возможно MySQL есть функция которая решает такую задачу. Подскажите как лучше поступить.

Решение задачи: «Найти разницу во времени для полей в формате TIME»

textual
Листинг программы
SELECT SUM(IF(`Время вылета`<'Время посадки', `Время посадки'-'Время вылета', '24:00:00'-'Время вылета'+'Время посадки') FROM `TABLE`

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

В данном коде выполняется запрос на выборку из таблицы TABLE с условием, что будут выбраны только те строки, где значение поля Время вылета меньше значения поля Время посадки. Далее производится вычисление разницы между этими двумя полями, и если разница больше или равна 24 часам, то к разнице добавляется 24 часа. Затем производится суммирование всех полученных значений разницы времени.

  1. SELECT SUM(IF(Время вылета<'Время посадки',
  2. `Время посадки'-'Время вылета',
  3. '24:00:00'-'Время вылета'+'Время посадки')
  4. FROM TABLE

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


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

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

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