不显示需要显示的内容

abithluo  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(534)

我试图用这段代码计算一天中创建的最后一个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。

$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上的ids是如何工作的,我需要帮助修复$todayattacks和$monthattack来计算它们需要什么。
如果有人知道如何解决这个问题,请告诉我:)

b5buobof

b5buobof1#

因为您使用的是date\子函数,所以间隔值不需要负数。从昨天到现在的跑步记录:

$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);

下面是一个如何工作的示例:
https://www.db-fiddle.com/f/itltczjbpbwucwcx3jlimk/1

相关问题