У меня есть небольшая проблема. По большей части я знаю, что делать, просто проверяя, есть ли более разумный способ сделать это. В нашей системе созданы билеты (очевидно, у них есть временные метки). Рабочее время с 9:00 до 20:00 (по будням, т.е. с понедельника по пятницу). Мы проверяем разницу во времени между временем создания билета и временем работы билета с помощью функции датирования.
Проблема возникает, когда билеты генерируются в нерабочее время. Мы думаем о корректировке билетов, созданных в нерабочее время, к следующему рабочему дню в 8:00, а затем рассчитываем время, необходимое для действия этих пунктов.
CASE
WHEN DATENAME(dw,Created_Time) IN ('Monday','Tuesday','Wednesday','Thursday','Friday')
AND DATEPART(HOUR,Action_Time) BETWEEN @Calling_Start_Time AND @Calling_End_Time
THEN 'In Week and Within Shift- Same time'
WHEN DATENAME(dw,Created_Time) IN ('Monday','Tuesday','Wednesday','Thursday')
AND DATEPART(HOUR,Action_Time) NOT BETWEEN @Calling_Start_Time AND @Calling_End_Time
THEN 'In Week and OUTSIDE Shift- Next day 8 AM'
WHEN (DATENAME(dw,Created_Time) = 'Friday'
AND DATEPART(HOUR,Action_Time) NOT BETWEEN @Calling_Start_Time AND @Calling_End_Time )
OR DATENAME(dw,Created_Time) IN ('Saturday','Sunday')
THEN 'Friday OUTSIDE Shift- Next Monday 8 AM'
WHEN DATENAME(dw,Created_Time) = 'Friday'
AND DATEPART(HOUR,Action_Time) NOT BETWEEN @Calling_Start_Time AND @Calling_End_Time
THEN 'Friday OUTSIDE Shift- Next Monday 8 AM'
ELSE 'Weekend'
END for_Adjusted
Я как раз писал это, когда думал, что должен быть лучший способ сделать это. Следовательно, проверка со всеми вами, ребята. Пожалуйста, помогите.
РЕДАКТИРОВАТЬ:
Вот пример данных и что я хочу:
________________________________________________________________________________________________________________________________________________________________
IC_Created_Local_UA| IC_Created_Weekday_Name | IC_Created_Adjusted | Logic
________________________________________________________________________________________________________________________________________________________________
10/28/2018 12:31 | Sunday | 10/29/2018 09:00 | Weekends should adjust to Monday 9:00AM
10/29/2018 04:44 | Monday | 10/29/2018 09:00 | Case: Monday Before Shift
10/29/2018 12:44 | Monday | 10/29/2018 12:44 | Case: Monday IN Shift (Weekday IN Shift remains same time)
10/29/2018 21:30 | Monday | 10/30/2018 09:00 | Case Monday After Shift (Mon- thur after shift adjusts to Next day 9:00 AM)
11/02/18 21:00 | Friday | 11/05/2018 09:00 | case Friday after shift adjusts to next Monday 9: am