Функция lead_time_ts
(Переименована из work_time
) рассчитывает количество секунд между двумя колонками по указанному календарю.
lead_time_ts(колонка1|выражение, колонка2|выражение, 'календарь')
колонка1 или выражение — первая дата, от которой начинается расчет времени.
колонка2 или выражение — вторая дата, конец временного интервала.
календарь — календарь, по-которому будет исключено лишнее время между двумя временными метками.
Календарь может быть указан через имя, которое отображается в модели данных, через упоминание таблицы журнала событий, в которой он привязан, или через ручное указание полного рабочего расписания:
Указание дней недели в календаре:
Указание времени дня недели в календаре:
Запрос:
SELECT
lead_time_ts(
cast('2022-11-01 00:00:00' as timestamp),
cast('2022-11-05 00:00:00' as timestamp),
'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;
2022-11-01 00:00:00 | 2022-11-05 00:00:00 |
---|
worktime |
---|
35 |
Запрос:
SELECT
started as date1,
ended as date2,
(ended - started) as absTime,
lead_time_ts(
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_log
started | ended |
---|---|
2011-01-08 12:05:00 | 2011-02-08 12:05:00 |
date1 | date2 | absTime | workTime |
---|---|---|---|
2011-01-08 12:05:00 | 2011-02-08 12:05:00 | 2678400 | 691479 |
Запрос:
SELECT
id,
lead_time_ts(
first_event(event_log.start_timestamp),
last_event(event_log.end_timestamp),
'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 case_table
extId |
---|
1 |
extId | name | start_timestamp | end_timestamp |
---|---|---|---|
1 | A | 2010-12-30 11:32:00 | 2010-12-30 11:32:00 |
1 | B | 2010-12-30 12:12:00 | 2010-12-30 12:12:00 |
1 | C | 2010-12-30 14:16:00 | 2010-12-30 14:16:00 |
1 | D | 2011-01-05 11:22:00 | 2011-01-05 11:22:00 |
1 | E | 2011-01-08 12:05:00 | 2011-01-08 12:07:30 |
id | worktime |
---|---|
1 | 217680 |
Указан календарь в модели с именем "w5x9-18"
Расписание на неделе:
Понедельник "09:00:00"-"17:59:59"
Вторник "09:00:00"-"17:59:59"
Среда "09:00:00"-"17:59:59"
Четверг "09:00:00"-"17:59:59"
Пятница "09:00:00"-"17:59:59"
Праздничные и выходные дни:
Нет
Дополнительные рабочие дни:
Нет
Запрос:
SELECT
id,
lead_time_ts(
first_event(event_log.start_timestamp),
last_event(event_log.end_timestamp),
'NAME: w5x9-18') as worktime
FROM case_table
extId |
---|
1 |
extId | name | start_timestamp | end_timestamp |
---|---|---|---|
1 | A | 2010-12-30 11:32:00 | 2010-12-30 11:32:00 |
1 | B | 2010-12-30 12:12:00 | 2010-12-30 12:12:00 |
1 | C | 2010-12-30 14:16:00 | 2010-12-30 14:16:00 |
1 | D | 2011-01-05 11:22:00 | 2011-01-05 11:22:00 |
1 | E | 2011-01-08 12:05:00 | 2011-01-08 12:07:30 |
id | worktime |
---|---|
1 | 217680 |