在 MySQL 中检索当前时间在startTime和endTime区间内的数据并按endTime排序SQL 如下一、核心 SQLsqlSELECT * FROM your_table WHERE NOW() BETWEEN startTime AND endTime ORDER BY endTime ASC;或使用CURRENT_TIMESTAMPsqlSELECT * FROM your_table WHERE CURRENT_TIMESTAMP BETWEEN startTime AND endTime ORDER BY endTime ASC;二、边界情况说明场景SQL 条件说明包含边界值BETWEEN startTime AND endTime包含开始和结束时间点不包含边界值NOW() startTime AND NOW() endTime严格在区间内只包含开始不包含结束NOW() startTime AND NOW() endTime包含开始不包含结束只包含结束不包含开始NOW() startTime AND NOW() endTime不包含开始包含结束三、带示例的完整查询sql-- 查询当前正在进行的调度任务 SELECT id, plate_number, driver_name, start_time, end_time FROM v_vehicle_driver_dispatch WHERE NOW() BETWEEN start_time AND end_time AND is_deleted 0 ORDER BY end_time ASC;四、时间区间类型说明当前时间与区间关系SQL 条件是否命中当前时间 startTimeNOW() BETWEEN startTime AND endTime❌ 不命中当前时间 startTimeBETWEEN包含边界✅ 命中startTime 当前时间 endTimeBETWEEN✅ 命中当前时间 endTimeBETWEEN包含边界✅ 命中当前时间 endTimeBETWEEN❌ 不命中五、MyBatis-Plus 写法java// Service 中 public ListVehicleDriverDispatch getCurrentDispatch() { LocalDateTime now LocalDateTime.now(); return this.lambdaQuery() .le(VehicleDriverDispatch::getStartTime, now) // startTime now .ge(VehicleDriverDispatch::getEndTime, now) // endTime now .eq(VehicleDriverDispatch::getIsDeleted, 0) .orderByAsc(VehicleDriverDispatch::getEndTime) .list(); }注意lege对应BETWEEN ... AND ...的边界包含逻辑。六、边界处理建议场景推荐写法说明业务上不允许端点重合NOW() startTime AND NOW() endTime严格区间业务上允许端点重合NOW() startTime AND NOW() endTime包含边界更清晰的语义NOW() startTime AND NOW() endTime开始包含结束不包含