Сумма времени SQlite PHP за 24 часа - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть список раз, который мне нужно сложить.У меня есть две таблицы: рабочие и расписание.

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: как добавить общее время чч: мм: сс, где тип данных столбца - DATETIME?
  2. sqlite: суммарное время за 24 ч до ЧЧЧ: ММ: СС

Проблема

Таблица расписания изображений ЭтоЗапрос работает нормально, если я суммирую значения до 24 часов: пример 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 голосов
/ 30 сентября 2018

Просто представьте значение в десятичных часах, так что вместо 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;

Вы можете отформатировать это обратно в строку в формате ЧЧ: ММ, если вы действительно,действительно хочу.Тем не менее, я советую вам указывать десятичные часы или минуты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...