Begindate (日時) と Enddate (日時) を持つデータベース テーブルがあります。この表には、活動期間が含まれています。現在、指定された開始日から終了日までの重複しないアクティビティに基づいて合計期間を計算する関数を作成しようとしています。
例は次のようになります。
パラメータを指定してこの関数を呼び出しています: Begindate='2012-08-16 10:00' Enddate='2012-08-16 18:00'
ここで、次のデータがテーブルにあるとします。
- begin: '2012-08-15 10:00' end '2012-08-15 14:00' (合計 4 時間)
- begin: '2012-08-16 09:00' end '2012-08-16 11:00' (合計 2 時間)
- begin: '2012-08-16 10:30' end '2012-08-16 10:45' (合計 15 分)
- begin: '2012-08-16 12:00' end '2012-08-16 16:00' (合計 4 時間)
- begin: '2012-08-16 13:00' end '2012-08-16 17:00' (合計 4 時間)
- begin: '2012-08-16 16:30' end '2012-08-16 16:45' (合計 15 分)
- begin: '2012-08-16 17:30' end '2012-08-16 20:00' (合計 2 時間 30 分)
今、私は次のことが起こるのが大好きです:
- 最初のアクティビティは指定された期間外であるため、含まれません。
- 部分一致なので、これは 1 時間を返します。
- アクティビティは 2 番目のアクティビティ内にあるため、含まれません。
- 期間内は4時間が含まれます。
- 16:00~17:00までの1時間
- アクティビティは含まれません。
- 指定された時間内に 30 分しかないため、それが含まれます。
返される合計は、6 時間 30 分です。
誰かがこれで私を助けることができれば、私はとても感謝しています! :)