mysql - 列出取决于时间限制的项目

标签 mysql

我试图提出一个 SQL 查询,该查询将列出特定时间跨度内的行,该时间跨度取决于当前时间。调用此查询的函数将检查用户是否在系统中,否则会将其列为缺席。

Table

例如,一个类在 9:00 开始,查询应将 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;

最佳答案

首先,学会使用参数。不要将 SQL 字符串与值混合在一起。这可能会导致语法错误和 SQL 注入(inject)漏洞。

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 上也有相同的条件。

关于mysql - 列出取决于时间限制的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028674/

相关文章:

php - AmCharts 与 MySQL

Python With MySQL 用于拆分 json 数据并将多行插入到表中

php - MySQL引用INNER JOIN并到达数据

mysql - 可以在 WHERE BETWEEN 语句中使用单字符通配符吗?

php - MYSQL。向不同表插入数据失败

c# - 如何在 MySQL 中只选择一条记录?

mysql - 如何通过联合查找NOT NULL列?

MySql:优化查询

mysql - 多对一关系的插入异常

mysql - 查询每个商品的购买数量列表