#mysql #time
Вопрос:
Мне нужно рассчитать разницу между двумя столбцами, которые имеют тип time
. Поля имеют имена start_time
и end_time
. Я использую эту функцию timediff(s,e)
, и она работает хорошо, но иногда это не так. Например, когда end_time
есть 00:00
то, что считается 12 AM
и start_time
есть 19:00
то, что является 7 PM
функцией разницы, показывает 19 часов (на самом деле я также выбираю hour(timediff(s,e))
), в то время как я ожидаю, что это будет 5 часов.
Как я могу это исправить?
Я попробовал это
case when finish_time lt; start_time then TIMEDIFF(timestamp('2021:01:02',finish_time),timestamp('2021:01:01',start_time)) else TIMEDIFF(timestamp('2021:01:01',finish_time),timestamp('2021:01:01',start_time)) end as diff,
и это работает
Ответ №1:
Поскольку 00:00:00
считается началом нового дня или даже если у вас есть время окончания, которое наступает на следующий день после времени начала, вам придется преобразовать поля начала и окончания в типы ДАТЫ и времени. Также, если вы хотите разницу между 2 разами, которые вы должны использовать timediff(end,start)
Комментарии:
1. Я обновил вопрос. Это хорошее решение?
2.Даты такие
'2021-01-02'
yyyy-mm-dd
3. Если вы протестировали его и он работает, то все в порядке
4. Спасибо. Да, все в порядке. Я просто искал лучшую практику