Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
smegol
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 35
1

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

23.08.2016, 20:08. Просмотров 925. Ответов 4
Метки нет (Все метки)

Уважаемые специалисты, добрый день!
Подскажите пожалуйста как можно решить такую задачу:

Есть таблица с данными, в которой 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 есть функция которая решает такую задачу.

Подскажите как лучше поступить.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2016, 20:08
Ответы с готовыми решениями:

Какой тип использовать для хранения метки времени UNIX в десятичном формате
У меня следующая таблица: -- -- Структура таблицы `chat_msg` -- ...

Отнять время от времени. Получить разницу в формате 00:00:00
есть date('H:i:s', $TIME) и date('H:i:s', $TIME2) у них разное время как узнать...

Узнать разницу во времени из базы, хранящееся в формате TIMESTAMP, и текущим временем сервера
Подскажите как узнать разницу во времени из базы,которое я достаю ,хранящаяся...

Найти разницу во времени (вычесть из одного времени другое)
Нужно найти разницу во времени: t1 - t2. Просто так объекты типа datetime...

Как вычислить разницу в формате "HH ч mm мин" между двумя значениями времени?
Добрый день! Есть таблица, одним из полей которого есть время в формате...

4
Grin640
38 / 27 / 3
Регистрация: 24.02.2015
Сообщений: 87
24.08.2016, 09:47 2
Лучший ответ Сообщение было отмечено smegol как решение

Решение

Можно попробовать следующим запросом:
SQL
1
SELECT SUM(IF(`Время вылета`<'Время посадки', `Время посадки'-'Время вылета', '24:00:00'-'Время вылета'+'Время посадки') FROM `TABLE`
но это будет работать только если самолет летит не более 24 часов.
1
Meridian21
143 / 141 / 44
Регистрация: 16.12.2015
Сообщений: 594
Записей в блоге: 4
24.08.2016, 11:06 3
smegol, не совсем понятен третий пример. Исходные данные следующие:
Дата вылета (день, когда рейс отправляется)
Время вылета (время, когда рейс отправляется)
Время посадки (время, когда рейс прибывает в аэропорт)
Кроме того, учитываем то, что самый длинный перелет (без посадки), если я не путаю, что-то вроде 18-19 часов.
Тогда можно сделать следующий "костыль". Добавляем поле "дата прибытия рейса" (именно одного перелета без посадки). Она пригодится, чтобы разрешать вторую ситуацию.
В таком случае, если дата вылета и прибытия совпадают, то вычитаем из времени вылета время прибытия и получаем летное время.
В случае, если даты не совпадают, то 24:00-время_вылета+время_прибытия= летное время (вылет сегодня в 22:20, прибытие завтра в 7:45, получаем 24:00-22:20+7:45). Как вариант, можно, предварительно, время перевести в минуты, а после подсчетов обратно в hh24:mi.
1
vsalien
19 / 19 / 6
Регистрация: 15.06.2014
Сообщений: 40
Завершенные тесты: 1
25.08.2016, 13:12 4
Вообще в mysql есть такие функции, как datediff и timediff. Можно их попробовать. Я не знаю, нужны ли для них полноценные дататаймы или только времени будет достаточно. Если работать только со временем и не указывать дату прибытия, то да, надо делать так, как написал Meridian21, т.е. в случае времени прибытия меньше либо равног о времени отбытия прибавлять 24 часа.
1
smegol
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 35
27.08.2016, 20:01  [ТС] 5
Всем спасибо за ответы, пока решил так:
1. Считать разницу с помощью PHP и записывать в дополнительное поле.

Нужно будет переделать на вариант Grin640.
0
27.08.2016, 20:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2016, 20:01

Найти разницу во времени
Найти разницу во времени когда в одной строке задано T1, T2 в формате hh:mm:ss...

Класс для представления времени, предусмотреть возможности установки времени и изменения его отдельных полей
Составить описание класса для представления времени. Предусмотреть возможности...

Отобразить для региона разницу во времени с Москвой
Добрый день Подскажите как реализовать следующие Есть таблица - с регионами +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru