【问题标题】:Calculate Total Time Value in Hours & Minutes以小时和分钟计算总时间值
【发布时间】:2016-01-01 18:53:59
【问题描述】:

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

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

下面的SQL会带入数据库中存储的所有meta_value

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

返回值如下(仅限前 5 个)

元值

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'

我没有以小时和分钟为单位的总数,所以我想知道是否有人可以帮助我实现这一点?

谢谢

韦恩

【问题讨论】:

  • 完成此操作后,我只存储了总分钟数(即 I 小时 * 60 + 分钟并将该值存储在数据库中)。这对你来说是一个选择吗?

标签: mysql sql


【解决方案1】:

使用 TIME_TO_SEC 转换为秒,然后是 SUM。对于输出,您可以使用 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'

我还没有测试过以上,但应该让你接近......

【讨论】:

  • 如果我想进一步扩展这个以考虑到工作时间的日期,它存储在 wp_frm_item_metas.meta_value WHERE wp_frm_item_metas.field_id = '84' 下,仅计算上述时间范围内的时间过去 1 个月使用 WHERE date > DATE_SUB(DATE(NOW()), INTERVAL 1 MONTH) 之类的东西,请问我该如何整合?谢谢韦恩
  • 我已经尝试过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),但这不起作用并且对结果没有影响 - 它仍然会输出总小时数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
相关资源
最近更新 更多