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 から翌朝 08:00 まで利用可能です。
たとえば、2013-01-01 11:00 から 2013-01-01 15:00 まで、個人が利用可能かどうかを確認したいと思います。記録によると、その日の 12:00 から 14:00 まで、その人物は不在です。
それが役立つ場合、アプリケーションは、誰かがスケジュールされたシフトのすべてまたは一部を別の従業員と交換する資格があるかどうかを確認することです。シフトのさまざまな部分の複数の取引が他の個人と行われる場合があります。一部が重複しない限り、誰かが自分のシフト全体を交換して、そのシフトの一部を他の人に任せることができます。新しい取引がスケジュールされたときに、従業員が要求された時間ブロックで実際に自由に取引できることを確認できる必要があります。