gpt4 book ai didi

php - 如何在php中获取总时间的总和

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:53 25 4
gpt4 key购买 nike

目前我正在使用考勤管理系统。我计算员工完成了多少小时。我已经计算了一天的工作小时数并将其存储在 mysql 数据库中。

$totaltime = (strtotime($time_out) - strtotime($time_in));

$hours = sprintf('%02d', intval($totaltime / 3600));

$seconds_remain = ($totaltime - ($hours * 3600));

$minutes = sprintf('%02d', intval($seconds_remain / 60));
$seconds = sprintf('%02d' ,($seconds_remain - ($minutes * 60)));

$final = '';

if ($time_in == '' || $time_out == '')
{
$final = '';
}
else
{
$final .= $hours.':'.$minutes.':'.$seconds;
}

例如

$time_in = 08:09:57
$time_out = 16:04:50
$final = 07:54:53 (total working hours)

现在我想获取每个员工当月的总工作时间。如何使用 php 获取 $final 的总和?month_data的样本数据

Emp_no  Date    Time_in Time_out    Total_hours TranID  
23 2019-08-01 07:54:40 16:01:40 08:07:00 1
23 2019-08-02 07:42:35 16:02:53 08:20:18 2

我想得到相关一名员工的 Total_hours 的总和

最佳答案

如果你问我这可以使用普通 MySQL 轻松完成,不需要 PHP 来计算。

您可以看一下类似这样的查询

SELECT SEC_TO_TIME(SUM(`Total_hours`) ) FROM `month_data` GROUP BY `Emp_no`;

有一个简单的 SUM 函数可以为您执行此操作,但它会以秒为单位返回总时间。

为了将其转换为可读时间,您可以使用 MySQL 函数 SEC_TO_TIME

编辑

如果所述列不是 TIME 列,您可以使用 CAST() CAST 将其作为此类列进行处理,所需的 SQL 类似于

SELECT SEC_TO_TIME(SUM(CAST(`Total_hours` AS TIME)) ) FROM `month_data` GROUP BY `Emp_no`;

不过,我的建议是将列类型更改为 TIME

编辑 2

我假设 SUM() 足够聪明,可以将时间转换为秒,并得出给定时间的正确总和。

还不确定为什么,但事实并非如此,因此您需要先将给定时间转换为秒数。

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(`Total_hours`)) ) FROM `month_data` GROUP BY `Emp_no`;

现在我还没有对此进行测试,但是 TIME_TO_SEC() 似乎接受 VARCHAR 就好了,所以需要 CAST() 列了。

关于php - 如何在php中获取总时间的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com