itranger:
Tengo la siguiente situación:
Tengo la una TimeRange de 17h a 22h.
Por ejemplo, entonces tiene una fila con la siguiente información:
Starttime (datetime): 2020-03-16 13:15:00
Endtime (datetime): 2020-03-16 19:45:00
¿Cómo puedo obtener el número de horas que está entre el TimeRange fijo (-> 2: 45h)
GMB:
Suponiendo que la hora de inicio / final no abarquen más de días, se puede utilizar timediff()
, greatest()
y least()
:
select timediff(
greatest(time(start_time), '17:00:00'),
least(time(endtime), '22:00:00')
)
greatest(time(start_time), '17:00:00')
le da 17h si el (componente de tiempo de) start_time
es inferior a 17h.
least(time(endtime), '22:00:00'
produce 22h si el tiempo final es mayor que 22 h.