我试图提出一个SQL查询,该查询将列出某个时间跨度内的行,这取决于当前时间。调用此查询的函数将检查用户是否在系统中,否则会将其列为缺席。
例如,一个类从9:00开始,查询应该将ScheduleTimeStart和ScheduleTimeEnd与当前时间进行比较。查询应仅在时间为9:00及以后列出行,但如果当前时间超过30分钟冷却时间,则不列出行。所以换句话来说就是9点到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 :(得分:0)
首先,学会使用参数。不要使用值来挖掘SQL字符串。这可能会导致语法错误和SQL注入漏洞。
SELECT s.*
FROM schedule s
WHERE scheduleID = ? AND classID = ? AND unitsID = ? AND
DATE(scheduleDate) = CURDATE() AND
scheduleTimeStart >= CURTIME() AND
scheduleTimeStart < CURTIME() + interval 30 minute;
目前尚不清楚scheduleTimeEnd
是否也需要相同的条件。