Подтвердить что ты не робот

Разница в минутах от двух временных полей в MySQL

Я установил свою базу данных MySQL с полем "время"

Это не HH: MM в традиционном смысле, это время, когда произошло событие, поэтому событие со значением 5:45 произошло с 5 минутами 45 секунд в игре. 12:25 произошло с 12 минутами и 25 секундами и т.д.

Я хотел бы узнать, сколько времени прошло, поэтому, если у меня есть событие, которое произошло в 12:25, и следующее событие произошло в 5:45, я хочу иметь возможность получить разницу, которая равным 6:40. Тогда я хотел бы выразить это как десятичное число, в этом случае 6.67.

Возможно ли это?

Спасибо заранее.

4b9b3361

Ответ 1

Просто используйте

TIMEDIFF(fromtime, totime):

SELECT TIMEDIFF("12:25", "5:45");

Если вам нужно десятичное число, используйте TIME_TO_SEC()/3600 (предполагается, что вы передали его в секундах, но формат, в котором вы сохраняете время, является неопределенным, и SQL, вероятно, будет интерпретировать их как HH: MM - вы можете исправить это с помощью CONCAT("00:",MinuteSecondField) может быть?) - тогда вы можете использовать TIME_TO_SEC()/60, что более правильно)

Ответ 2

Мне нужно было подобное. Две полезные функции: TIME_TO_SEC и SUBTIME.

например. если ваши поля времени были нормальными HH: MM раз, то

SELECT (TIME_TO_SEC(end_time) - TIME_TO_SEC(start_time))/60 AS `minutes` 

В вашем случае, как я понимаю, времена обратные, т.е. 12:00<6:00, чтобы ваш end_time и start_time нуждались в замене.

Если вы хотите получить результат в HH: MM: SS, вы можете сделать

SELECT SUBTIME(end_time, start_time)

Ответ 4

Я использовал UNIX_TIMESTAMP (event1) -UNIX_TIMESTAMP (event2), который дает вам секунды между событиями. Разделите его на 60.0, и вы получите десятичное число согласно вашему требованию. Это решение предполагает, что ваши столбцы соответствуют дате. Он будет работать очень быстро, если они TIMESTAMPs.

UPDATE: это решение работает только с типами данных timestamp, а не с временными типами данных, как в исходном вопросе.