我有一个表,其中包含每个记录的开始和结束日期时间戳和时间计算,如下所示:
start time end time time it took
2015-02-11 16:32:57 2015-02-11 17:23:34 0 day 00 hr. 50 min.
2015-02-12 11:59:03 2015-02-12 12:05:53 0 day 00 hr. 6 min.
2015-02-12 12:33:52 2015-02-12 12:43:22 0 day 00 hr. 9 min.
2015-02-12 12:43:12 2015-02-13 09:56:08 0 day 21 hr. 12 min.
2015-02-13 09:36:49 2015-02-13 09:53:55 0 day 00 hr. 17 min.
如何获得最早的日期时间和最新的日期时间,以便我可以对这2个日期时间进行计算,以获得所有记录合计的总时间?
我假设最早的日期时间条目将是第一条记录的开始时间,最新的日期时间条目将是最后一条记录的结束时间。
更新
我问错了。我无法选择第一个开始日期时间和最后结束日期时间,因为它会计算起始端对之间的所有时间。我需要把所有花费的时间加起来"条目。怎么做的?
如果它在几秒钟内更容易存储,那么转换页面,让我知道,然后提供该方法的解决方案。感谢。
另一次更新
因此,在将数据库中的所有时间数据更改为秒后,我使用以下内容来获取所需内容。有时(实际上很多次)当人们给出答案时,他们会给出很少的代码片段,并且没有详细说明或提供有关如何使用所述片段的示例。例如,SUM(时间)本身没有任何作用,我也不知道如何实现它。我需要出去搜索如何使用它,以下是我发现的。在旁注,不知道什么是问答网站,如果我必须去其他地方寻找扩展(更详细)的代码。
$result = mysql_query("SELECT SUM(time) AS time_sum FROM table WHERE jobnum='".$jobnum."'");
$row = mysql_fetch_assoc($result);
$sumoftime = $row['time_sum'];
//echo $sumoftime; //as seconds
echo secondsToWords($sumoftime); //as words with days, hours, minutes, and seconds from a separate function
单独的功能:
function secondsToWords($seconds) {
$ret = "";
/*** get the days ***/
$days = intval(intval($seconds) / (3600*24));
if($days> 0) {
$ret .= "$days days ";
}
/*** get the hours ***/
$hours = (intval($seconds) / 3600) % 24;
if($hours > 0) {
$ret .= "$hours hours ";
}
/*** get the minutes ***/
$minutes = (intval($seconds) / 60) % 60;
if($minutes > 0) {
$ret .= "$minutes minutes ";
}
/*** get the seconds ***/
$seconds = intval($seconds) % 60;
if ($seconds > 0) {
$ret .= "$seconds seconds";
}
return $ret;
}
答案 0 :(得分:0)
我会做以下事情:
$stmt = "select
start_time,
end_time
from times
";
// Add all results to an array
// Loop through the array of start and end times
foreach($times as $time) {
$total += (new \DateTime($time['end_time']))->getTimestamp() - (new \DateTime($time['start_time']))->getTimestamp();
}
// Get Hours, minutes and seconds
$hours = floor($total/3600);
$total -= $hours * 3600;
$minutes = floor($total/60);
$total -= $minutes * 60;
$seconds = floor($total);
// Output
echo "{$hours}h {$minutes}m {$seconds}s";