【问题标题】:get average hours in php language获取 php 语言的平均小时数
【发布时间】:2020-05-05 05:35:08
【问题描述】:

我有一个包含 3 列的表格: idstart_servicestop_service

我已经设法使用此查询捕获start_servicestop_service 之间的时差:

SELECT
  TIMEDIFF (stop_service, start_service)  AS tempo 
FROM
  user_establishment ORDER BY id;

现在我需要将这个查询的所有结果相加并除以记录数,从而得到所有服务的平均时间。

主要问题是小时的转换。

有人可以帮帮我吗?

【问题讨论】:

  • 帖子必须是英文的。
  • @FunkFortyNiner 对不起,我修好了
  • 谢谢爱德华多。看看下面给出的答案。

标签: mysql time timestamp average


【解决方案1】:

以下查询将用于获取时间差的平均值。 在 mysql 查询中使用 AVG() 函数时无需添加 ORDER BY 子句。它节省了执行时间。

SELECT AVG(TIMEDIFF(stop_service, start_service)) AS tempo 
FROM user_establishment;

【讨论】:

  • 在“服务启动”字段中我有以下时间:03:19:15 在“fim_servico”字段中我有以下时间:03:20:18 我用你的代码得到的结果是:54.0000 它必须以小时为单位
  • 一次得到所有行的平均结果。我认为您正在寻找以记录方式计算停止和开始之间的差异?我说的对吗?
  • 我需要计算 start_service 和 end_service 之间差异的平均值,并以小时格式显示结果
【解决方案2】:

如果您需要在数小时内获得结果,请尝试此方法。如果你需要在几秒钟内得到它,你可以省略除以 3600(这是我要做的,然后在我的代码中对其进行操作)。

SELECT
AVG(TIME_TO_SEC(TIMEDIFF(stop_service, start_service)))/3600  AS tempo 
FROM
user_establishment;

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    如果您希望以小时为单位的平均时差精确到小数点后两位,您可以尝试以下查询。

    select ROUND(AVG(TIME_TO_SEC(tempo)/3600), 2) as avg_time
    from (
        select TIMEDIFF(stop_service, start_service) as tempo
        from user_establishment
    ) as timeline
    

    您可以根据需要修改平均时间差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多