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 小时的主要内容,如果未能解决你的问题,请参考以下文章