You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算多员工单日总工作时长与总薪酬?

实现多员工单日总工作时长与总薪酬计算

方法一:直接通过SQL计算(推荐)

利用数据库日期函数直接计算总时长和总薪酬,效率更高,减少PHP端计算压力:

SELECT 
    SUM(TIMESTAMPDIFF(MINUTE, timeIn, timeOut)) AS total_minutes,
    -- 假设时薪为 $11.48(由总薪酬34.44/总时长3得出,可根据实际规则调整)
    ROUND(SUM(TIMESTAMPDIFF(MINUTE, timeIn, timeOut)) / 60 * 11.48, 2) AS total_salary
FROM worker_table;

对应PHP调用代码:

$result = mysqli_query($conn, "SELECT SUM(TIMESTAMPDIFF(MINUTE, timeIn, timeOut)) AS total_minutes, ROUND(SUM(TIMESTAMPDIFF(MINUTE, timeIn, timeOut))/60*11.48,2) AS total_salary FROM worker_table");
$row = mysqli_fetch_assoc($result);

// 转换总分钟为小时格式
$total_hours = intdiv($row['total_minutes'], 60) . ':' . ($row['total_minutes'] % 60);
$total_salary = '$' . $row['total_salary'];

echo "总工作时长:{$total_hours}<br>";
echo "总薪酬:{$total_salary}";

方法二:在PHP循环中累加计算

基于你现有代码修改,通过循环累加单条记录时长,最终计算总时长和薪酬:

$total_diff_minutes = 0;
$hourly_rate = 11.48; // 时薪,根据实际规则调整

$result = mysqli_query($conn, "SELECT * FROM worker_table ");
while ($row = mysqli_fetch_array($result)) {
    $from_time = strtotime($row['timeIn']);
    $to_time = strtotime($row['timeOut']);
    $diff_minutes = round(abs($from_time - $to_time) / 60, 2);
    
    $total_diff_minutes += $diff_minutes;
    
    // 保留单条记录时长输出(如果需要)
    $hours = intdiv($diff_minutes, 60) . ':' . ($diff_minutes % 60);
    echo $hours . "<br><br>";
}

// 计算总工作时长格式
$total_hours = intdiv($total_diff_minutes, 60) . ':' . (round($total_diff_minutes % 60));
// 计算总薪酬
$total_salary = '$' . round($total_diff_minutes / 60 * $hourly_rate, 2);

echo "<hr>";
echo "总工作时长:{$total_hours}<br>";
echo "总薪酬:{$total_salary}";

注意事项

  • 确保timeIn和timeOut字段为MySQL可识别的日期时间格式(如YYYY-MM-DD HH:MM:SS),否则日期解析函数会失效。
  • 时薪需根据实际薪酬规则调整,若有加班费率、固定日薪等特殊规则,需修改对应计算逻辑。

内容的提问来源于stack exchange,提问作者Samson M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:35:55