Функция workTime
рассчитывает количество секунд между двумя колонками по указанному календарю.
workTime(колонка1, колонка2, 'календарь')
- колонка1 — первая дата, от которой начинается расчет времени.
- колонка2 — вторая дата, конец временного интервала.
- календарь — календарь, по-которому будет исключено лишнее время между двумя временными метками.
Указание дней недели в календаре:
- Понедельник — MON
- Вторник — TUE
- Среда — WED
- Четверг — THU
- Пятница — FRI
- Суббота — SAT
- Воскресенье — SUN
Указание времени дня недели в календаре:
- Время может быть указано только Часами или Минутами: 18:00
- Время может быть указано Часами, Минутами, Секундами: 17:59:59
Запрос:
SELECT
workTime(
strToTime('2022-11-01 00:00:00'),
strToTime('2022-11-05 00:00:00'),
'MON 09:00 - 18:00, TUE 09:00 - 18:00, WED 09:00 - 18:00, THU 09:00 - 18:00, FRI 09:00 - 17:00'
) / 3600 AS worktime
FROM process
LIMIT 1
Данные на входе:
Данные на выходе:
2022-11-01 00:00:00 |
2022-11-05 00:00:00 |
Запрос:
SELECT
timeToStr(started) as date1,
timeToStr(ended) as date2,
(ended - started) as absTime,
workTime(
started,
ended,
'MON 09:00 - 17:59:59, TUE 09:00 - 17:59:59, WED 09:00 - 17:59:59, THU 09:00 - 17:59:59, FRI 09:00 - 17:59:59') as workTime
FROM event
Данные на входе:
Данные на выходе:
started |
ended |
1294488300 |
1297166700 |
date1 |
date2 |
absTime |
workTime |
2011-01-08 12:05:00 |
2011-02-08 12:05:00 |
2678400 |
691479 |
Запрос:
SELECT
extId,
workTime(
first(event.started),
last(event.ended),
'MON 09:00 - 18:00, TUE 09:00 - 18:00, WED 09:00 - 18:00, THU 09:00 - 18:00, FRI 09:00 - 18:00'
) AS worktime
FROM process
Данные на входе
Данные на выходе
Process
Event
extId |
name |
started |
ended |
1 |
A |
1293708720 |
1293708720 |
1 |
B |
1293711120 |
1293711120 |
1 |
C |
1293718560 |
1293718560 |
1 |
D |
1294226520 |
1294226520 |
1 |
E |
1294488300 |
1294488450 |