Sum Time SQlite PHP 超过 24 小时

Posted

技术标签:

【中文标题】Sum Time SQlite PHP 超过 24 小时【英文标题】:Sum Time SQlite PHP over 24Hrs 【发布时间】:2018-09-30 18:32:00 【问题描述】:

我有一个需要总结的时间列表。我有两张表:workers 和 schedule。

CREATE TABLE schedule (
    id,
    worker_id,
    date,
    start_time,
    end_time,
    hours

SELECT w.name, w.salary, time(sum(strftime('%s', hours) - strftime('%s', '00:00:00')), 'unixepoch') AS total_hours
FROM workers w
JOIN schedule s ON s.worker_id = w.id
  WHERE  date between '2018-09-17' AND '2018-09-21'
GROUP BY w.name

小时数列包含每天工作的总小时数。我找到了一些其他帖子,但不是我需要的解决方案。

    sqlite: how to add total time hh:mm:ss where column datatype is DATETIME? sqlite: sum time over 24h to HHH:MM:SS

问题

图片时间表 如果我将 24Hrs 下的值相加,则此请求可以正常工作:例如 10:00 + 07:00,总数将为:17:00,但如果我将更多时间相加:10:00 + 07:00 + 09:00 我将得到: 02:00. 我不知道我做错了什么。

我正在寻找的结果:

Worker   | Salary | Total Hours
John Doe | $28.00 | 26:00
worker 1 | $30.00 | 20:15
worker 2 | $25.00 | 42:30

【问题讨论】:

【参考方案1】:

只需将值表示为十进制小时数,因此 10:30 将被表示为 10.5:

SELECT w.name, w.salary,
       sum(strftime('%s', hours) - strftime('%s', '00:00:00')) / (60.0 * 60) as decimal_hours
FROM workers w JOIN
     schedule s
     ON s.worker_id = w.id
WHERE  date between '2018-09-17' AND '2018-09-21'
GROUP BY w.name;

如果您真的非常需要,您可以将其格式化回 HH:MM 形式的字符串。不过,我建议您将其保留为十进制小时或分钟。

【讨论】:

感谢您的回答,但这并没有添加分钟示例:8:30 + 9:22 = 17h。应该是 17:52 小时 @Vargas 。 . .这产生的不是分钟,而是十进制小时。所以那将是 17.867。

以上是关于Sum Time SQlite PHP 超过 24 小时的主要内容,如果未能解决你的问题,请参考以下文章

php如何判断两个时间的时间差

判断文件的更改时间是否超过24小时python脚本

php时间差方法

如何设置php上传文件大小限制

PHP如何判读时间区间

MySQL SUM 两列之间差异的值