@habrakot

Как сложить два временных интервала?

Добрый день.

Есть учёт рабочего времени. Люди утром приходят, вечером уходят. и так весь месяц. время между приходом и уходом я посчитал. Теперь мне эту разницу во времени надо сложить и получить сколько каждый сотрудник был на месте. Как это сделать?
  • Вопрос задан
  • 754 просмотра
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Из таблицы приходов/уходов подзапросом выбрать идентификатор сотрудника и datediff (в часах) тех записей, у которых даты относятся к определённому месяцу, а потом основным запросом сгруппировать по идентификтору сотрудника и выполнить суммирующую агрегацию часов.

select employee_id, sum(work_hours) as work_hours from (
    select employee_id, datediff(hh, coming_time, leaving_time) as work_hours
    from work_schedule
    where Year(coming_time) = Year(CURRENT_TIMESTAMP) and Month(coming_time) = Month(CURRENT_TIMESTAMP)
) as sq group by employee_id;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы