【问题标题】:I have a sum of difference between dates in a Sql table. How do I calculate its average in days, hours, minutes?我有一个 Sql 表中日期之间的差异总和。如何计算以天、小时、分钟为单位的平均值?
【发布时间】:2021-07-14 08:28:59
【问题描述】:

我有一个表格,每行都有一个开始时间和一个结束时间(日期时间,例如:2021-07-09 17:12:00)。

当我通过这个 SQL 查询计算结束时间和开始时间之间所有差异的总和时:

SELECT 
    TIME(SUM(TIMEDIFF(`end_time`, `start_time`))) AS TimeDiff
FROM 
    my_table

我得到一个以小时、分钟、秒表示的结果(例如:00:02:00)

现在我需要计算这个总和的以小时、分钟、秒表示的平均时间。 意思是:

SELECT 
    TIME(SUM(TIMEDIFF(`end_time`, `start_time`))) AS TimeDiff
FROM 
    my_table

TimeDiff/行数(以小时、分钟、秒表示)

你能帮帮我吗?真的谢谢

【问题讨论】:

  • 如果您使用的数据库可以平均时间类型,那么只需将其包装在 AVG() 中。如果你用 aDB 不能,那么将时间转换成总秒数,取单个整数的平均值,然后再转换回来
  • 顺便说一句,“表中所有时间的总和”似乎是一个值,所以平均值也是相同的值。也许您不应该将它们相加,而应取平均值
  • @CaiusJard 首先感谢。每行的结束时间和开始时间之间的差异是不同的。例如第一行是 1 分钟。第二个是3分钟。这些两个差异的总和是 4 分钟。我的平均值是 (1 + 3)/行数 -> 4/2 = 2 分钟。您写道:“将时间转换为总秒数,平均单个整数,然后转换回来”:我该怎么做?
  • 您是否尝试过将 SUM 换成 AVG?如果您的数据库可以对时间求和,那么它也可以对它们进行平均。 AVG相当于SUM/COUNT,所以如果AVG​​不起作用,也许SUM(...)/COUNT(*)会
  • 用您正在使用的数据库标记您的问题。

标签: sql average


【解决方案1】:

由于 TIMEDIFF 功能,冒昧地猜测您正在使用 MySQL。始终说明您使用的数据库; SQL 是标准,不是产品

您询问了如何将时间转换为秒数并返回,它可能看起来像:

SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(TIMEDIFF(end_time, start_time)))) FROM ...

【讨论】:

  • 您好,非常感谢,它有效!只是另一个问题:它返回给我的结果是这样表达的:63:38:33.0313(小时:分钟:秒:....)。我需要将此值表示为:Days:Hours:Minutes 没有秒。你能帮助我吗?真的很感谢!!!
  • 你的意思是像tutorialspoint.com/…
  • 首先感谢。这是我所拥有的: $media = Database::ExecuteScalar("SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(TIMEDIFF(Risolto, Richiesto)))) AS Media FROM socialPm_media_uploads"); echo("Tempo Medio Gestione 门票:$media"); -- 实际上我看到的结果是:63:51:53.4965。我需要类似:X 天 Y 小时 Z 分钟(我不需要秒,因为 start_time 和 end_time 不提供秒)。我查看了您的链接 (tutorialspoint.com/…),它只提供日期和时间。你可以帮帮我吗?真的非常感谢
  • 分钟只是MINUTE(the_time) 例如SELECT FLOOR(HOUR(x)/24) as days, HOUR(x)MOD 24 as hours, MINUTE(x) as mins FROM (SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(TIMEDIFF(Risolto, Richiesto)))) AS x FROM socialPm_media_uploads) xx
  • 你简直太棒了!!真的真的很感谢!它完美地工作! Tnx!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2020-01-02
相关资源
最近更新 更多