【问题标题】:Counting hours using MySQL使用 MySQL 计算小时数
【发布时间】:2012-11-15 17:26:33
【问题描述】:

我正在创建一个简单的项目,我在其中计算员工出勤率和其他事情 当员工上班迟到时,我必须输入延迟时间,例如 员工上班迟到 30 分钟,所以我会在字段中输入 30:00 或 00:30:00 ,在每个月、周或天的月底,我要计算时间,例如 30 分钟 + 1H + 25 分钟,在每个月末我会得到报告中所有小时和分钟的总和,报告会显示该时间的平均值和总和。

以下字段(Timing Logged in Duration、Total Talking Time、Work、Time Not ready Time)我想计算小时和分钟。

我在报告中得到的是显示我输入的时间总和作为上午/下午的时间,这不是我想要的。

这是 MySQL 查询

SELECT
ID,
`Date`,
`Shift Time`,
`In charge`,
`Agent Name`,
Attendance,
Timing,
`Logged in Duration`,
`Total Talking Time`,
`Work Time`,
`Not ready Time`,
`Calls Handled`,
RNA,
`Shift Calls Presented`,
`Shift Calls Handled`,
`HD Calls Abandoned`,
`Upload Your Report`
FROM `shift report`

【问题讨论】:

  • 例如使用 SUM(总通话时间)进行格式化。例如this link 接下来,您按员工分组。你能做到吗?
  • 将分钟保存为 Int 字段可能更容易。使计算更容易。
  • 无论如何,如果您还没有管理格式,请用long formatting看看这个

标签: mysql


【解决方案1】:

我想我会以总结时间价值相关问题的角度为您发布答案,开发人员,用户迄今为止面临的问题。这不仅仅是格式化。

您可能注意到也可能没有注意到,总时间的总和可能会被引擎错误计算。尽管您有值,但进一步的 mysql 引擎可能会返回 null。

当您添加/汇总时间值时,它会转换为数字,结果将采用数字格式。如果您尝试将时间值相加,如下所示:

例如01:38:50, 03:40:25 --> 理想情况下应该是 05:19:15

  • 如果你做 Sum(以上两个)--> 你会得到一个数字
  • 如果你使用 CAST(Sum(the above two) AS TIME) --> 你会得到 null
  • 我的代码 sn-p 中还显示了另外两种可能性。

Sample code reference。它将向您展示我们刚刚讨论的不同结果。就目前而言,似乎三种方式格式化会有所帮助。

time_format(sec_to_time(sum(time_to_sec(logged_duration))),'%h:%i:%s') total_log_duration

The bug reported to MySQL is not rectified yet.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2011-04-15
    • 2012-10-17
    • 2022-11-15
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多