PHP开发问题:实现仅展示当日提醒列表时日期过滤结果异常
问题原因
- SQL查询条件错误:当前使用的
reminder_date > ?逻辑是匹配大于传入时间的所有记录,自然会返回当日及之后的所有提醒,不符合仅展示当日提醒的需求。 - 时间格式匹配问题:当前生成的
$now是带12小时制时分秒、上下午标识的格式,如果你的reminder_date字段为DATE类型(仅存储年月日),格式不匹配会导致查询结果异常。
修复方案
方案1:适用于reminder_date为DATE类型(仅存年月日)
直接修改查询条件为匹配当日日期即可,代码如下:
<?php include '../../main.php'; check_loggedin($pdo); // 仅生成当日年月日格式,和DATE字段匹配 $today = date("Y-m-d"); // 条件改为等于当日日期 $stmt = $pdo->prepare('SELECT * FROM care_plan_review where reminder_date = ? order by id desc'); $stmt->execute([$today]); $allReview = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>
方案2:适用于reminder_date为DATETIME类型(带时分秒)
限定查询范围为当日0点到次日0点,避免遗漏当日任意时间的提醒:
<?php include '../../main.php'; check_loggedin($pdo); // 当日0点 $startToday = date("Y-m-d 00:00:00"); // 当日最晚时间 $endToday = date("Y-m-d 23:59:59"); // 条件限定在当日时间范围内 $stmt = $pdo->prepare('SELECT * FROM care_plan_review where reminder_date BETWEEN ? AND ? order by id desc'); $stmt->execute([$startToday, $endToday]); $allReview = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>
内容的提问来源于stack exchange,提问作者user17223386
相关产品推荐
相关产品推荐

