假设
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。也就是说,你得到了整个一月,而从二月开始什么都没有。