首页 > 解决方案 > 如何检查两个日期时间在固定时间范围之间有多少小时

问题描述

我有以下情况:

我有一个从 17 小时到 22 小时的时间范围。

例如,我有一排包含以下信息:

Starttime (datetime): 2020-03-16 13:15:00
Endtime (datetime): 2020-03-16 19:45:00

如何获得固定时间范围之间的小时数(-> 2:45h)

标签: mysqlsqldatedatetimeselect

解决方案


假设开始/结束时间不跨越几天,您可以使用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')如果(时间分量)start_time小于 17 小时,则给您 17 小时。

least(time(endtime), '22:00:00'如果结束时间大于 22h,则产生 22h。


推荐阅读