2011-06-04 6 views
-1

私はシフトのために次のテーブルを持っています。SQLで最も近いシフト時間を見つけるのに助けが必要

AutoId StartTime  EndTime 
1  08:00:00 AM  04:00:00 PM 
2  04:00:00 PM  12:00:00 AM 
3  12:00:00 AM  08:00:00 AM 

今、私は自動的に従業員へのシフトを割り当てたい...

例えば誰かが7:32に来た場合、その後、彼のシフトは午前八時00分00秒からの第1シフト、つまり、あるべき午後4時00分。誰かが11:45 PMに来たら、それは自動的に第3のシフトとして設定されるべきです。

また、従業員がシフトの最初の1時間に入社した場合、それも機能することが必要です。

従業員のInTimeを指定すると、最も近いシフトをどのように見つけることができますか?

+0

、どのようなシフトは、それらに割り当てられる必要がありますか?最初のシフトでは1時間以上かかりますが、次のシフトが始まるまではまだまだ長いです。 –

+0

これは私の2番目のコメントを読んでください....これは私の質問ではありません...もし答えが分かったら、ここに投稿してください...そうでなければ、フィードバックを与える必要はありません... –

+0

あなたが話しているコメント。従業員に1時間の猶予を与えるべきだと言います。私の質問は、ある特定のシフトに** 1時間以上もかかわらず、次のシフトが始まるまでに(時間のように)あまりにも多くの時間があるときに、エンパイが時計を入れたらシフトを割り当てる方法です。私はそのことを明確にしたいと思います。私の例は従業員が時計を入れている時刻の午前9時05分です。 –

答えて

1

のような何か:

SELECT AutoId, StartTime, EndTime 
    FROM Shifts 
WHERE StartTime = (SELECT MIN(StartTime) FROM Shifts WHERE DATEADD(hh, 1, StartTime) > inTime) 

EDIT:従業員は9:05で付属している場合を追加しました猶予期間

+0

Intimeのために働くのはシフト開始時間よりも短いですが、15-22分... 1時間の猶予期間を与えたい... –

+0

誰かが30分の55分後に来たらどうしたらいいですか? – Pankaj

+0

要件ごとに1時間の猶予期間を設けます... –

関連する問題