Разница времени TIMEDIFF - MySQL
Формулировка задачи:
Имеется время вылета и время прибытия, а также время пути.
Если время вылета 17:25 прибытие 20:25 то время в пути 03:00, что собственно верно, а если
время вылета 22:41 прибытие 03:05 время в пути -19:36 хотя должно быть 5:36
Как сделать чтобы при переходе на следующие сутки время высчитывалось правильно?
Запрос такого вида:
TIME_FORMAT(
TIMEDIFF(`ArrivalTime`, `DepartTime`), '%H:%i') AS `TravelTimes`,Решение задачи: «Разница времени TIMEDIFF»
textual
Листинг программы
SELECT
TIME_FORMAT((
CASE
WHEN
DepartTime > ArrivalTime
THEN
ADDTIME(TIMEDIFF('24:00:00', DepartTime), ArrivalTime)
ELSE
TIMEDIFF(ArrivalTime, DepartTime)
END
), '%H:%i') AS TravelTimes
Объяснение кода листинга программы
- Сначала мы используем функцию TIME_FORMAT для форматирования времени в формате 'HH:ii'.
- Затем мы используем функцию CASE для проверки, является ли время отправления больше времени прибытия.
- Если время отправления больше времени прибытия, мы используем функцию ADDTIME для добавления 24 часов к времени отправления, а затем используем функцию TIMEDIFF для вычисления разницы между временем прибытия и временем отправления.
- Если время отправления меньше или равно времени прибытия, мы просто используем функцию TIMEDIFF для вычисления разницы между временем прибытия и временем отправления.
- Результатом является время в формате 'HH:ii', которое представляет собой общее время путешествия.