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

PDO查询时Y-m-d格式日期匹配失败无法获取对应数据问题

问题排查与修复方案

  • 修正日期生成代码
    DateTime 构造函数第一个参数留空即可直接获取当前时间,不需要额外传入date(),修改后可先打印变量确认格式符合预期:
// 修正后代码
$today = new DateTime('', new DateTimeZone('Asia/Taipei'));
$newdate123 = $today->format('Y-m-d');
// 调试用,确认日期输出是否正确
// var_dump($newdate123);
  • 修正SQL语法
    替换SQL中不通用的&&逻辑运算符为标准的AND:
$stmt3 = $conn->prepare("SELECT * FROM sales WHERE transtype = 'Investment' AND estatus = 'Approved' AND approvedate = :now_date");
  • 适配数据库字段类型
    如果数据库中approvedate字段是DATETIME/TIMESTAMP类型(带时分秒),会和仅含日期的Y-m-d字符串匹配失败,修改查询语句取字段的日期部分匹配即可:
$stmt3 = $conn->prepare("SELECT * FROM sales WHERE transtype = 'Investment' AND estatus = 'Approved' AND DATE(approvedate) = :now_date");
  • 调试查询结果
    执行查询后先打印匹配行数确认是否有数据返回:
$stmt3->execute(['now_date'=>$newdate123]);
// 输出匹配到的记录数,0代表无匹配
// echo $stmt3->rowCount();
  • 优化金额计算逻辑
    你当前的$totalinvt仅在循环有数据时才会被赋值,建议将格式化逻辑移到循环外,避免无数据时取值异常:
$total3 = 0;
foreach($stmt3 as $srow3) {
    $total3 += $srow3['vAmount'];
}
$totalinvt = number_format($total3, 2);

内容的提问来源于stack exchange,提问作者Mark Angelo L. Sison

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:39:01