时间比较大小问题,与当天指定时间点比较

如下表格的时间格式,根据人员上下班时间,计算出需要扣除的工时,表达式要怎样写才行

时间点1、  早上 10:30

时间点2、 下午 16:30

时间点3、  晚上22:30

1、如果上班时间小于 10点30分,并且下班时间大于 10:30 小于等于16:30 , 则扣 0.5 工时

 2、如果上班时间大于 10点30分,并且下班时间大于16:30 小于等于22:30  则扣 0.5 工时

3、 如果上班时间小于10点30分,并且下班时间大于 22:30 ,则扣1.5 工时

4、除上面情况外,扣 1 工时

image.png

FineReport 用户RzfYB0094268 发布于 3 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
华莉星宸Lv7专家互助
发布于3 天前

在sql里面 用case when 判定就行

最佳回答
0
Yours飞飞Lv5初级互助
发布于3 天前(编辑于 3 天前

image.png

with t1 as (

SELECT '张三' employee_name,'2025-09-22 12:00:00' start_time,'2025-09-23 01:00:00' end_time,'' deduct_hours UNION ALL

SELECT '李四' employee_name,'2025-09-22 12:00:00' start_time,'2025-09-23 01:00:00' end_time,'' deduct_hours UNION ALL

SELECT '王五' employee_name,'2025-09-22 10:00:00' start_time,'2025-09-23 16:20:00' end_time,'' deduct_hours UNION ALL

SELECT '赵六' employee_name,'2025-09-22 10:00:00' start_time,'2025-09-23 22:40:00' end_time,'' deduct_hours

)

SELECT 

    employee_name,

    start_time,

    end_time,

    CASE 

        -- 情况1:上班时间 < 10:30 且 10:30 < 下班时间 <= 16:30

        WHEN TIME(start_time) < '10:30:00' 

             AND TIME(end_time) > '10:30:00' 

             AND TIME(end_time) <= '16:30:00' 

        THEN 0.5

        -- 情况2:上班时间 > 10:30 且 16:30 < 下班时间 <= 22:30

        WHEN TIME(start_time) > '10:30:00' 

             AND TIME(end_time) > '16:30:00' 

             AND TIME(end_time) <= '22:30:00' 

        THEN 0.5

        -- 情况3:上班时间 < 10:30 且 下班时间 > 22:30

        WHEN TIME(start_time) < '10:30:00' 

             AND TIME(end_time) > '22:30:00' 

        THEN 1.5

        -- 其他情况

        ELSE 1

    END AS deduct_hours

FROM t1;

  • 3关注人数
  • 47浏览人数
  • 最后回答于:3 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部