2017-03-26 6 views
0

現在の時刻に依存する特定の時間範囲内にある行をリストするSQLクエリが出現しようとしています。このクエリーを呼び出す関数は、ユーザーがシステムにいるかどうかをチェックし、そうでない場合は、ユーザーを不在としてリストします。制限時間に依存するアイテムを一覧表示する

Table

クラスは、例えば午前9時から始まるので、クエリは、現在の時刻と、ScheduleTimeStartとScheduleTimeEndを比較する必要があります。この問合せでは、時刻が9:00以降の場合にのみ行がリストされますが、現在の時刻が30分の再試行期間を超えた場合は行がリストされません。つまり、9:00〜9:30です。私がこれまで行ってきた何

SELECT studentID, scheduleID, scheduleDate, scheduleTimeStart, scheduleTimeEnd, schedule.classID, schedule.unitsID 
FROM schedule 
JOIN schedule_students USING(scheduleID) 
JOIN students USING(studentID) 
WHERE scheduleDate=CURDATE() 
AND scheduleTimeStart >= CURTIME() //Gordons answer 
AND scheduleTimeStart < CURTIME() + interval 30 minute// but its not working 
AND studentID=1003; 
+0

これまでに何を得ているのですか? – RiggsFolly

+0

1番目の質問が更新されました – Bobys

+0

スケジュールされたアイテムは1時間に開始され、1時間に終了するようです。現在の時間が時間の30分後にあれば、どのようなレコードを表示する必要がありますか? –

答えて

0

まず、パラメータを使用することを学びます。 SQL文字列に値を追加しないでください。これにより、構文エラーやSQLインジェクションの脆弱性が引き起こされる可能性があります。

scheduleTimeEndでも同じ条件を使用するかどうかは不明です。

+0

あなたの答えゴードンに感謝します。 + 30分間隔で何ができるのか説明できますか? – Bobys

+0

@Bobys。 。 。それは時間に30分を追加します。 –

+0

なぜ私はCURTIME()を使用すると間隔がNULLを返すのかわかりませんが、NOW()を使用すると正常に動作します。 Unfortunalty私のレコードはNOW()形式ではなく、時間だけを使用しています。 – Bobys

関連する問題