На работе были поставлены следующие задачи:
- Учет рабочего времени по тикетам;
- Учет рабочего времени по дням (Получить по каждому сотруднику отработанные часы начиная с заданного за каждый рабочий день);
Отчет по дням
[sql]
SELECT DATE_FORMAT( FROM_UNIXTIME( starttime
) , "%d %M %Y" ) AS Дата
SEC_TO_TIME(SUM((TIMESTAMPDIFF(SECOND , FROM_UNIXTIME(`starttime`) , FROM_UNIXTIME( `endtime`))))) AS 'Отработано', ticket
FROM work_log
WHERE FROM_UNIXTIME( starttime
) >= 'year-mont-day' AND ( endtime
) <> 0
GROUP BY ticket, Дата
ORDER BY DATE_FORMAT( FROM_UNIXTIME(starttime
) , "%d %M %Y" ) DESC
[/sql]
Отчет по тикетам
Создаем временную таблицу, в которую заносим затраченное время на тикет и номер тикета
[sql]CREATE TEMPORARY TABLE tmp (spent TIME, ticket INT(11));[/sql]
Добавляем во временную таблицу значения потраченно времени и номер тикета
[sql]
INSERT INTO tmp
SELECT
SEC_TO_TIME(SUM((TIMESTAMPDIFF(SECOND , FROM_UNIXTIME(`starttime`) , FROM_UNIXTIME( `endtime`))))) as spent, ticket
FROM work_log
WHERE FROM_UNIXTIME( starttime
) >= '2013-06-17' AND ( endtime
) <> 0
GROUP BY ticket
ORDER BY DATE_FORMAT( FROM_UNIXTIME(starttime
) , "%d %M %Y" ) DESC;
[/sql]
Обновляем таблицу ticket_custom с учетом данных временной таблицы
[sql]
UPDATE ticket_custom
AS tc, tmp
AS t SET tc.value = t.spent WHERE tc.ticket = t.ticket AND tc.name = 'tt_spent';[/sql]
Выводим данные для проверки
[sql]SELECT * FROM ticket_custom[/sql]
Прошлые записи
- Переезд в Калининград
- О serverless технологии для чатботов
- Свободное время на улучшение блога
- o-zhizni-v-kaliningrade-spustya-god
- Продажа гаража из другого города
- В Калининграде спустя полгода
- Выйти на работу или сидеть дома
- Теперь мы живем в старой немецкой квартире и счастливы
- Как за один день найти жилье в августе 2020 (после пандемии) и чуть не остаться на улице с двумя детьми
- О переезде в Калининград
- О протестах в Америке