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

如何在MYSQL中使用BETWEEN日期条件查询指定表的对应字段数据

解决方法

核心错误原因

SQL语法中BETWEEN要求左侧参数必须小于等于右侧参数,日期类型字段也遵循该规则。你传入的参数中:startDate = 2021-10-09大于:endDate10 = 2021-09-29,拼接后的查询条件等价于Datum >= '2021-10-09' AND Datum <= '2021-09-29',没有符合该条件的记录,因此返回空结果。

修复代码

首先校正两个日期的顺序,再执行查询:

// 校正日期顺序,保证BETWEEN左侧为较小日期、右侧为较大日期
if (strtotime($startDate) > strtotime($endDate10)) {
    $temp = $startDate;
    $startDate = $endDate10;
    $endDate10 = $temp;
}

$sqlAverage10 = "SELECT Stand FROM Aktienstand WHERE Symbol=:symbol AND Datum BETWEEN :startDate AND :endDate10";
if ($stmtAverage10 = $pdo->prepare($sqlAverage10)) {
    $stmtAverage10->execute(array(
        ':symbol' => $kurs['Symbol'],
        ':startDate' => $startDate,
        ':endDate10' => $endDate10
    ));
    // 如需获取区间内所有符合条件的记录,将fetch替换为fetchAll
    $stmtAverage10New = $stmtAverage10->fetch(PDO::FETCH_ASSOC);
}

其他校验点

  • 确认Aktienstand表中Datum字段的类型为DATE/DATETIME,避免字符串格式比对出现逻辑异常
  • 若需要获取整个日期区间的所有Stand值做平均值计算等操作,将fetch()方法替换为fetchAll(PDO::FETCH_ASSOC),fetch()仅会返回第一条匹配记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:03