首页 > 解决方案 > 在mysql中拆分夜班时间并将工作时间分成两部分

问题描述

我想拆分轮班时间。夜班时间(22:01:00(第 1 天) - 06:00:00(第 2 天)) 我有 2 列 start_date 和 end_Date,假设一个人从 23:55:00 开始并在 1:20:00 结束时再次开始在 1:30:00 和 05:50:00 结束,像这样有多个记录。

示例 1

我可以知道如何将工作时间分成两部分 day-1 - (23:55:00) - (23:59:59) (4/5 分钟) (23:55:00 - 1:20:00 之间) day-2 - (12:00:00) - (06:00:00)(其余工作时间)

还有一个例子(2)

一个人从晚上 9 点开始工作,应该像这样分开 晚上 9 点 - 晚上 10 点(下午) 晚上 10 点 - 晚上 11.59 点(第 1 天) 上午 12 点 - 早上 6 点(第 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%'  ```

标签: mysql-workbench

解决方案


推荐阅读