В службе поддержки нашей организации мы хотели бы подсчитать время, потраченное с момента создания заявки. У нас много локаций с разными настройками рабочего времени. Некоторые локации будут работать круглосуточно, а некоторые - с 9 утра до 5 вечера. Каждое утро мне нужно запускать запрос, чтобы получить билеты с возрастом более 8 часов и выполнить какие-то действия с ними. Есть ли на сервере SQL столбец секундомера или любой другой вариант, с помощью которого возраст автоматически увеличивается в минутах, чтобы при каждом запросе мы могли получить точный возраст с момента создания.
Например, если местонахождением является филиал, и билет, созданный в 15:00 07.07.2020, и если запрос выполняется 11.07.2020 09:00, возраст согласно рабочим часам (с 9:00 до 17:00) составляет 2 часа. Если местонахождение билета находится в головном офисе, то часы работы - 24x7, а возраст билета в рабочее время будет 18 часов.
Добавлены 3 столбца для обработки этой информации ..
IS_TIMER_RUNNING: истина | false true: в рабочее время (с 9:00 до 17:00). false: в нерабочее время (с 17:00 до 9:00). TIMER_RUNNING_TIME: datetime TICKET_AGE: время в секундах
При использовании задания в 9 утра для IS_TIMER_RUNNING будет установлено значение true. В задании 17:00 для IS_TIMER_RUNNING будет установлено значение false, а в TICKET_AGE будет указано время в секундах до конца этого времени.
Я попробовал следующий запрос, который дает ожидаемый запрос.
SELECT
TICKETID,
CONVERT(
VARCHAR,
DATEADD(
s,
CASE WHEN IS_TIMER_RUNNING = '1' THEN datediff(
s,
dateadd(
s,
(wo.TIMER_RUNNING_TIME / 1000),
'1970-01-01 00:00:00'
),
GETUTCDATE()
) + TICKET_AGE ELSE TICKET_AGE END,
'1900/01/01'
),
108
)
FROM
TICKET
Пожалуйста, сообщите, доступен ли другой лучший вариант