我正在尝试使用此代码计算当日创建的末尾ID和当月创建的末尾ID
$TodayAttacks = $odb->query("SELECT COUNT(id) FROM `logs`
WHERE `date` BETWEEN DATE_SUB(CURDATE(), INTERVAL '-1' DAY) AND
UNIX_TIMESTAMP()")->fetchColumn(0);
$MonthAttack = $odb->query("SELECT COUNT(id) FROM `logs`
WHERE `date` BETWEEN DATE_SUB(CURDATE(), INTERVAL '-30' DAY) AND
UNIX_TIMESTAMP()")->fetchColumn(0);
我像往常一样将其放在html上,但后来foto
它显示0,那就不对。起作用的是显示总ID和运行ID。
$RunningAttacks = $odb->query("SELECT COUNT(*) FROM `logs` WHERE `time` + `date` > UNIX_TIMESTAMP() AND `stopped` = 0")->fetchColumn(0);
$TotalAttacks = $odb->query("SELECT COUNT(*) FROM `logs`")->fetchColumn(0);
这两种方法都可以,但是其他要在一天和一个月内计算的方法都不能使用,只是显示0。 这是MySQL上ID的工作方式 foto 我需要帮助修复$ TodayAttacks和$ MonthAttack来计算它们需要的内容。
如果有人知道如何解决此问题,请告诉我:)
答案 0 :(得分:0)
由于使用的是DATE_SUB函数,因此间隔值不需要负数。要获取从昨天到现在的运行计数:
$TodayAttacks = $odb->query("SELECT COUNT(id) FROM `logs`
WHERE `date` > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))")->fetchColumn(0);
要获取最近30天的计数,请尝试:
$MonthAttack = $odb->query("SELECT COUNT(id) FROM `logs`
WHERE `date` > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 30 DAY))")->fetchColumn(0);
有关其工作原理的示例在此处发布: