MySQL に関するレポートがいくつかあります。以下のコードは、問題に対する現在の解決策です。
スタッフのシフトが真夜中を超える時期を検討し始めるまでは、非常に簡単に思えるので、クエリを調整する必要があります。現在、次のように、日付/時間の範囲に応じてphpにさまざまなクエリを生成させています。
勤務シフトが同じ日の場合 (例: 2 日間にわたって午前 8 時から午後 8 時):
SELECT <select statements>
FROM <from statements>
WHERE
(
(Date = '2012-04-16' AND Time BETWEEN '08:00:00' AND '20:00:00')
OR
(Date = '2012-04-02' AND Time BETWEEN '08:00:00' AND '20:00:00')
);
シフトが深夜を超えると、複雑になります (つまり、2 日間で午後 8 時から午前 8 時)。
SELECT <select statements>
FROM <from statements>
WHERE
(
(
(Date = '2012-04-16' AND Time >= '20:00:00')
OR
(Date = '2012-04-17' AND Time <= '08:00:00')
)
OR
(
(Date = '2012-04-17' AND Time >= '20:00:00')
OR
(Date = '2012-04-18' AND Time <= '08:00:00')
)
);
ご想像のとおり、これらのクエリは、レポートに追加するたびに非常に長く、重くなります。これを行うためのよりスマートな方法があるに違いありません-誰かが洞察を提供できますか?