代码之家  ›  专栏  ›  技术社区  ›  Hamdan Nuramdani

对账单中一周内不同表中的数据求和

  •  0
  • Hamdan Nuramdani  · 技术社区  · 10 月前

    我可以用这个代码对今天、本月不同表格的数据进行求和。

    例如,今天的SUM数据:

    include 'config_connect.php';
    $today=date('d');
    $thismonth=date('m');
    $thisyear=date('Y');
    
      $sqlx2="SELECT (SUM(total)-SUM(payout)) AS data FROM paid WHERE bill IN (SELECT bill FROM transactionin) AND paydate LIKE '$thisyear-$thismonth-$today'";
      $resultx2=mysqli_query($conn,$sqlx2);
      $row=mysqli_fetch_assoc($resultx2);
      $data43=$row['data'];
    
    echo $data43;
    
    

    如何对一周内的数据求和? 非常感谢。

    尝试在一周内找到对数据求和的固定代码。

    1 回复  |  直到 10 月前
        1
  •  0
  •   Adrian Maxwell    10 月前

    假设 paydate 中的列 bayar 是用于正确进行日期比较的DATE或DATETIME数据类型。然后使查询更加“通用”,这样它就可以用于一天、一周或一个月,在所有情况下都可以按日期范围进行筛选。例如:对于一天使用运算符>=并且<而不是“喜欢”

    $today = date('Y-m-d');
    
    $sql = "SELECT (SUM(total)-SUM(payout)) AS data 
            FROM bayar 
            WHERE bill IN (SELECT bill FROM transactionin) 
            AND paydate >= '$today' AND paydate < '$today + INTERVAL 1 DAY'";
    $result = mysqli_query($conn, $sql);
    $row = mysqli_fetch_assoc($result);
    $data = $row['data'];
    
    echo $data;
    

    然后是允许范围的两个日期都是参数的问题,例如:

    $startDay = date('Y-m-d', strtotime('2023-01-01'));
    $endDay = date('Y-m-d', strtotime('2023-02-01'));
    
    $sql = "SELECT (SUM(total)-SUM(payout)) AS data 
            FROM bayar 
            WHERE bill IN (SELECT bill FROM transactionin) 
            AND paydate >= '$startDay' AND paydate < '$endDay'";
    $result = mysqli_query($conn, $sql);
    $row = mysqli_fetch_assoc($result);
    $data = $row['data'];
    
    echo $data;
    

    注意:使用 >= 具有 < 如果“结束日”实际上是该范围的最后一天之后的第二天,则运算符工作可靠且可预测。例如,为了获得整个1月,开始日期是2023-01-01,并且您获得所有数据>=直到2023-02-01, 但不包括 2023-02-01。也就是说,你得到了整个一月,而从二月开始什么都没有。