Php 如何计算日期差之和?
表中的数据如下所示Php 如何计算日期差之和?,php,mysql,Php,Mysql,表中的数据如下所示 ds_start_time -> 09:00:00 , ds_end_time-> 09:30:00 ds_start_time -> 09:00:00 , ds_end_time-> 10:30:00 ds_start_time -> 10:00:00 , ds_end_time-> 10:30:00 ds_start_time -> 09:30:00 , ds_end_time-> 10:30:00 我要的是日期的差异,然
ds_start_time -> 09:00:00 , ds_end_time-> 09:30:00
ds_start_time -> 09:00:00 , ds_end_time-> 10:30:00
ds_start_time -> 10:00:00 , ds_end_time-> 10:30:00
ds_start_time -> 09:30:00 , ds_end_time-> 10:30:00
我要的是日期的差异,然后求和
为此,我提出了这个问题
SELECT SUM(TIMEDIFF(ds_end_time,ds_start_time))
FROM www
WHERE abc='123'........
但最后我得到了2058800.000000。从这里我可以得到总小时分和秒。
或任何其他方法。Plz建议。使用PHP而不是SQL将更容易做到这一点。考虑得到实际的时间,然后循环它们。< /P>
$total = 0;
foreach ($results as $val) {
$total += strtotime($val['ds_end_time']) - strtotime($val['ds_start_time']);
}
然后使用$total,您就有了执行所需操作的总毫秒数。使用PHP而不是SQL将更容易做到这一点。考虑得到实际的时间,然后循环它们。< /P>
$total = 0;
foreach ($results as $val) {
$total += strtotime($val['ds_end_time']) - strtotime($val['ds_start_time']);
}
然后使用$total,您就有了总毫秒数来做您想做的事情。在MySQL中,如果您知道如何:
SELECT SEC_TO_TIME(SUM
(TIME_TO_SEC(ds_end_time) - TIME_TO_SEC(ds_start_time))
) AS timediff
FROM www
WHERE abc = '123'
请注意,如果有许多行具有abc='123'
,则您可能会得到双重计数,因此您可能需要尝试:
SELECT SEC_TO_TIME(
(MAX(TIME_TO_SEC(ds_end_time)) - MIN(TIME_TO_SEC(ds_start_time)))
) AS timediff
FROM www
WHERE abc = '123'
在MySQL中很容易做到这一点,如果您知道如何:
SELECT SEC_TO_TIME(SUM
(TIME_TO_SEC(ds_end_time) - TIME_TO_SEC(ds_start_time))
) AS timediff
FROM www
WHERE abc = '123'
请注意,如果有许多行具有abc='123'
,则您可能会得到双重计数,因此您可能需要尝试:
SELECT SEC_TO_TIME(
(MAX(TIME_TO_SEC(ds_end_time)) - MIN(TIME_TO_SEC(ds_start_time)))
) AS timediff
FROM www
WHERE abc = '123'
您使用什么RDBMS?是MySQL吗?使用时间到秒和秒到秒的时间,就像下面的回答:你使用什么RDBMS?是MySQL吗?使用时间到秒和秒到秒的时间,如下面的回答:@user827726试试这个,正如Johan所说,这将是我最好的答案seen@user827726试试这个,约翰说这是我见过的最好的