Настройка вне рабочего времени Дата-время до следующего рабочего дня 8 утра в T- SQL (SQL Сервер) - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть небольшая проблема. По большей части я знаю, что делать, просто проверяя, есть ли более разумный способ сделать это. В нашей системе созданы билеты (очевидно, у них есть временные метки). Рабочее время с 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
...