разделить время ночной смены и разделить рабочее время на 2 части в mysql - PullRequest
1 голос
/ 05 мая 2020

Я бы хотел разделить время смен. время ночной смены (22:01:00 (день 1) - 06:00:00 (день 2)) У меня есть 2 столбца start_date и end_Date, предположим, что человек начал в 23:55:00 и финишировал sh 1:20: 00 снова началось в 1:30:00 и завершилось sh в 05:50:00. Таких записей несколько.

пример 1

Могу я узнать, как разделить рабочее время на 2 части день-1 - (23:55:00) - (23:59:59) (4/5 минут) (между 23:55:00 - 1:20:00) день-2 - (12:00:00) - (06:00:00) (остальное рабочее время)

и еще один пример (2)

человек приступил к работе в 21:00. Смены должны быть разделены следующим образом: с 21:00 до 22:00 (после обеда) с 22:00 до 23:59 (день 1) с 12:00 до 6:00 (день 2)

Я пробовал это например 1

select
            start_dt as start_date,
            end_dt as end_date,
            ucase(rep) as assignee,
            timediff(end_dt,start_dt)  as total_time_spent,
            (case
                when 
                    CONVERT(start_dt,TIME) > convert('22:01:00',TIME) 
                    and convert(end_dt,TIME) <= CONVERT('11:59:59',TIME)
                then
                    timediff(end_dt,start_dt) 
            end ) as time_spent_day_1 ,
            (case
                when 
                    CONVERT(start_dt,TIME) > convert('12:00:00',TIME) 
                    -- and convert(end_dt,TIME) <= CONVERT('05:59:59',TIME)
                then
                    timediff(end_dt,start_dt) 
            end) as time_spent_day_2 

            from table_1
            WHERE CONVERT(start_dt,TIME) > convert('22:01:00',TIME) 
            and CONVERT(DATE_ADD(end_dt, INTERVAL 1 DAY),TIME) <= convert('05:59:59',TIME)
          and ucase(rep) like '%xyz%'  ```
...