Cómo comprobar el número de horas de dos datetimes es entre un TimeRange fijo

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_timees inferior a 17h.

least(time(endtime), '22:00:00' produce 22h si el tiempo final es mayor que 22 h.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=298813&siteId=1
Recomendado
Clasificación