Разница в минутах от двух временных полей в MySQL
Я установил свою базу данных MySQL с полем "время"
Это не HH: MM в традиционном смысле, это время, когда произошло событие, поэтому событие со значением 5:45 произошло с 5 минутами 45 секунд в игре. 12:25 произошло с 12 минутами и 25 секундами и т.д.
Я хотел бы узнать, сколько времени прошло, поэтому, если у меня есть событие, которое произошло в 12:25, и следующее событие произошло в 5:45, я хочу иметь возможность получить разницу, которая равным 6:40. Тогда я хотел бы выразить это как десятичное число, в этом случае 6.67.
Возможно ли это?
Спасибо заранее.
Ответы
Ответ 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)
Ответ 3
Для меня это сработало:
TIMESTAMPDIFF(MINUTE, T0.created, T0.modified)
Ссылка: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff
Ответ 4
Я использовал UNIX_TIMESTAMP (event1) -UNIX_TIMESTAMP (event2), который дает вам секунды между событиями. Разделите его на 60.0, и вы получите десятичное число согласно вашему требованию. Это решение предполагает, что ваши столбцы соответствуют дате. Он будет работать очень быстро, если они TIMESTAMPs.
UPDATE: это решение работает только с типами данных timestamp, а не с временными типами данных, как в исходном вопросе.