SQlite PHP的总时间超过24小时

时间:2018-09-30 18:32:01

标签: php sql sqlite

我有一个需要总结的时间清单。我有两个表:worker和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

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

  1. sqlite: how to add total time hh:mm:ss where column datatype is DATETIME?
  2. 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 个答案:

答案 0 :(得分: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格式的字符串。我建议您将其保留为十进制小时或分钟。