[英]Count Date Range for all rows in SQL DB
我試圖計算用戶在某個日期期間打卡的天數,因為用戶可以一次打卡幾天我需要找出兩個日期之間的差異,然后計算每個日期的總天數日期期間內的列,並且僅在 accountid 匹配的位置。
有沒有人對我哪里出錯有任何建議。
數據庫表
id, datein, dateout, accountid
1, 2022-08-01, 2022-08-03, 1
2, 2022-08-04, 2022-08-05, 2
3, 2022-08-05, 2022-08-05, 1
4, 2022-08-05, 2022-08-08, 1
5, 2022-08-06, 2022-08-07, 2
6, 2022-08-06, 2022-08-08, 3
7, 2022-08-07, 2022-08-10, 1
8, 2022-08-08, 2022-08-08, 2
代碼
<?php
$accountid =$user->data()->id;
$monthdate=date("Y-m-d", strtotime("-1 month"));
$crrntdte=date("Y-m-d");
$query3=mysqli_query($conn,"SELECT DATEDIFF('datein', 'dateout') as monthlysessions from addsession where ((datein) between '$monthdate' and '$crrntdte') && (accountid='$accountid');");
$result3=mysqli_fetch_array($query3);
$sum_monthly_sessions=$result3['monthlysessions'];
?>
<?php echo $sum_monthly_sessions;?>
如果你想獲得前 30 天的總和,你可以在DATEDIFF
之前添加SUM
並且如果你想讓它連續
SUM(IF(DATEDIFF(dateout, datein) = 0, DATEDIFF(dateout, datein) +1, DATEDIFF(dateout, datein)))
你可以用這個,這樣的選擇可以做得更好,但最簡單。 但是如果你想讓它像上個月一樣,例如它是八月,那么從 2022-08-01 到 2022-08-31,使用這樣的東西:
SELECT
SUM(IF(DATEDIFF(dateout, datein) = 0, DATEDIFF(dateout, datein) + 1, DATEDIFF(dateout, datein)))
FROM
addsession
WHERE
accountid = 1
AND MONTH(datein) = MONTH(CURRENT_DATE());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.