我有一个包含开始日期(日期时间)和结束日期(日期时间)的数据库表。此表包含活动持续时间。现在我正在尝试创建一个函数来计算基于指定 begindate-enddate 内的非重叠活动的总持续时间。
一个例子如下:
我正在调用此函数并提供参数: Begindate='2012-08-16 10:00' Enddate='2012-08-16 18:00'
现在假设表中有以下数据:
- 开始:“2012-08-15 10:00”结束“2012-08-15 14:00”(共 4 小时)
- 开始:“2012-08-16 09:00”结束“2012-08-16 11:00”(共 2 小时)
- 开始:“2012-08-16 10:30”结束“2012-08-16 10:45”(共 15 分钟)
- 开始:“2012-08-16 12:00”结束“2012-08-16 16:00”(共 4 小时)
- 开始:“2012-08-16 13:00”结束“2012-08-16 17:00”(共 4 小时)
- 开始:“2012-08-16 16:30”结束“2012-08-16 16:45”(共 15 分钟)
- begin: '2012-08-16 17:30' end '2012-08-16 20:00' (共 2 小时 30 分钟)
现在我希望发生以下情况:
- 第一项活动超出指定期限,因此不包括在内。
- 部分匹配,因此这将返回 1 小时。
- 活动在第二个活动中,因此不包括在内。
- 包括期间内的 4 小时。
- 16:00 至 17:00 包含 1 小时
- 活动将不包括在内。
- 指定时间段内只有 30 分钟,因此将包括在内。
返回的总时间为:6 小时 30 分钟。
如果有人可以帮助我,我将不胜感激!:)