对于给定的时间跨度,例如 2013-01-01 08:00 和 2013-01-02 08:00(24 小时),随着时间的推移,某人可能已按顺序输入记录以表明它们可用或不可用。如果新输入的记录的时间跨度重叠,则只允许使用不同的类型(可用或不可用)。发生更改时会保留可用性记录。
如何确定给定的时间跨度是否完全可用?
例如,我可能有以下记录:
RecId | Start DateTime | End DateTime | Type
=====================================================
1 | 2013-01-01 08:00 | 2013-01-02 08:00 | Available
2 | 2013-01-01 08:00 | 2013-01-02 08:00 | Unavailable
3 | 2013-01-01 17:00 | 2013-01-02 08:00 | Available
4 | 2013-01-01 08:00 | 2013-01-02 17:00 | Available
5 | 2013-01-01 12:00 | 2013-01-02 14:00 | Unavailable
鉴于上述记录,此人目前在 2013 年 1 月 1 日 08:00 至 12:00 和 14:00 至次日凌晨 0800 有空。
我现在想检查个人是否在 2013-01-01 11:00 到 2013-01-01 15:00 之间有空。答案应该是否定的,因为记录表明该人在该日期的 12:00 至 14:00 之间没有时间。
如果有帮助,该应用程序将查看某人是否有资格与另一名员工交换全部或部分预定轮班。可以与其他人进行轮班不同部分的多次交易。有人可以将他们的整个轮班换掉,然后为其他人工作该轮班的一部分,只要部分不重叠。当安排新交易时,我们需要能够检查员工实际上是否可以在请求的时间段内自由交易。