You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP执行SQL按时间条件查询班次数据返回0结果问题排查

问题根因

你目前的查询逻辑只适配了非跨天班次的判断,对end_time为00:00的跨天班次(也就是你的shift4,19:00到次日00:00)完全不生效:

  • 比如当前时间为21:00,满足start_time <= '21:00',但end_time > '21:00'的判断中,end_time的值是00:00,字符串比较下'00:00' > '21:00'结果为false,自然查不到对应班次。

修复方案

把SQL的判断逻辑拆分为跨天、非跨天两种场景分别处理即可,修改后的代码如下:

include 'config.php';
$create_time = date('H:i');

// 新增跨天班次判断逻辑,同时改用预处理语句避免SQL注入风险
$stmt = $conn->prepare("
SELECT * FROM shift_times 
WHERE 
    -- 非跨天班次判断
    (end_time > start_time AND start_time <= ? AND end_time > ?)
    OR
    -- 跨天班次判断
    (end_time < start_time AND (start_time <= ? OR end_time > ?))
");
// 绑定参数
$stmt->bind_param("ssss", $create_time, $create_time, $create_time, $create_time);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo $row["shift_title"];
    }
} else {
    echo "0 results";
}
$stmt->close();
$conn->close();

验证覆盖场景

修改后可以覆盖所有班次的匹配逻辑:

  • 00:00~08:30:匹配shift1
  • 08:30~12:00:匹配shift2
  • 12:00~19:30:匹配shift3
  • 19:00~次日00:00:匹配shift4
  • 边界时间如08:30、12:00等也会匹配到正确的后续班次

内容的提问来源于stack exchange,提问作者Walrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:45:03