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

如何使用PHP计算剩余天数(从数据库读取到期日)

计算到期剩余≤30天的客户数量

你的SQL语句存在几个明显问题:

  • strtotime是PHP函数,不能直接嵌入SQL语句中执行
  • 语法错误:括号不匹配,还有错误的.符号(函数调用应该用()而非.)
  • 直接在SQL里使用PHP的time()不合适,应改用数据库的当前时间函数

推荐写法(MySQL数据库)

直接用数据库内置日期函数计算,效率更高:

$sql = "SELECT COUNT(id) AS total FROM clients WHERE TIMESTAMPDIFF(DAY, NOW(), due_date) <= 30 AND due_date >= NOW()";
$result = mysqli_query($con, $sql);
$values = mysqli_fetch_assoc($result);
$num_rows = $values['total'];
echo $num_rows;
  • TIMESTAMPDIFF(DAY, NOW(), due_date):计算当前时间到到期日的天数差
  • 追加due_date >= NOW()是为了排除已过期的记录,若需要统计包含过期(剩余天数为负)的情况,可去掉该条件

备选写法(PHP端处理,不推荐)

若一定要在PHP中计算日期,需先拉取所有到期日数据再处理:

$sql = "SELECT due_date FROM clients";
$result = mysqli_query($con, $sql);
$count = 0;
$currentTime = time();
while ($row = mysqli_fetch_assoc($result)) {
    $dueTime = strtotime($row['due_date']);
    $remainingDays = round(($dueTime - $currentTime) / (24 * 60 * 60));
    if ($remainingDays <= 30) {
        $count++;
    }
}
echo $count;

这种方式需要将全量数据拉到PHP端处理,数据量大时性能较差,优先选择数据库端计算方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:09:33