2016-01-01 157 views
0

我有一个输入表单,用户将输入他们的开始时间和开始时间。然后我有一个函数可以计算时间差,并存储在新字段中工作的小时数和分钟数。以小时和分钟计算总时间值

我想要做的是将总时间计算为小时和分钟中的一个值。

下面的SQL将带来存储在数据库中

SELECT wp_frm_item_metas.meta_value 
FROM wp_frm_item_metas 
WHERE 1=1 
    AND wp_frm_item_metas.field_id = '103' 

此如下返回值的所有meta_value(第5只)

meta_value

2:15 
1:15 
2:15 
4:15 
0.00 

如果我用下面的

SELECT SUM(wp_frm_item_metas.meta_value) AS total_hours 
FROM wp_frm_item_metas 
WHERE 1=1 
    AND wp_frm_item_metas.field_id = '103' 

我不能以小时和分钟得到总数,所以我想知道有没有人可以帮助我实现这个目标?

感谢

韦恩

+1

当我做这个我刚刚存储的总分钟数(即我小时×60 +分钟,并存储数据库中的值)。这对你来说是一种选择吗? – WillardSolutions

回答

1

使用TIME_TO_SEC转换成秒,再总结。对于输出,您可以使用SEC_TO_TIME函数获取小时数:分钟。例如:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(wp_frm_item_metas.meta_value))) AS total_hours 
    FROM wp_frm_item_metas 
WHERE 1=1 
    AND wp_frm_item_metas.field_id = '103' 

我没有测试过上述但应该让你关闭...

+0

完美的作品谢谢你。 – Wayne

+0

如果我想进一步扩展,以考虑存储在wp_frm_item_metas.meta_value WHERE wp_frm_item_metas.field_id ='84'中的工作小时的日期,以便仅使用类似的方法计算最近1个月内的小时数'WHERE date> DATE_SUB(DATE(NOW()),INTERVAL 1 MONTH)'我怎么能把它整合?感谢韦恩 – Wayne

+0

我试图'SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(wp_frm_item_metas.meta_value))), '%H:%I')AS total_hours FROM wp_frm_item_metas WHERE 1 = 1 AND wp_frm_item_metas.field_id = '103' AND DATE_SUB(DATE(NOW()),INTERVAL 1 MONTH)'但这不起作用,对结果没有影响 - 它仍然输出总时数。 – Wayne