Предполагая, что время начала / окончания не охватывает несколько дней, вы можете использовать timediff()
, greatest()
и least()
:
select timediff(
greatest(time(start_time), '17:00:00'),
least(time(endtime), '22:00:00')
)
greatest(time(start_time), '17:00:00')
дает вам 17 часов, если (компонент времени из) start_time
меньше 17 часов.
least(time(endtime), '22:00:00'
дает 22 часа, если время окончания больше 22 часов.