gpt4 book ai didi

mysql - 使用MySQL获取当前在线员工

转载 作者:行者123 更新时间:2023-11-29 07:37:05 24 4
gpt4 key购买 nike

我的员工在不同的类次和工作日工作。他们的类次详细信息按以下格式保存在工作类次表中。

  1. 工作日 - 星期一、星期二、星期三、星期四、星期五、星期六、星期日
  2. 开始时间 - 24 小时格式。例如,05:00
  3. 结束时间 - 24 小时格式。例如,18:00

一些员工上夜类。因此,他们的开始时间为 20:00,结束时间为 05:00(第二天早上)。对于夜类员工,工作日将是工作日的开始时间。

我需要向员工展示现在在线/工作。这是一个实时数据。我当前正在提取当天的记录,然后使用 Java 验证当前时间是否在开始和结束时间之内。如果是,则显示该记录,否则忽略。

由于员工的增加,整个过程现在花费的时间太长。

我想直接使用 SQL 进行此检查。开始时间和结束时间字段为 varchar(10),并且始终采用 HH:MM 格式

是否可以直接在 SQL 中执行此操作?

最佳答案

如果您使用日期/时间格式存储实际时间,确实会更容易。但是,考虑到数据的格式,您可以使用显式逻辑来找出当前谁在轮类:

select ws.*
from workshifts ws
where (ws.StartTime < ws.EndTime and
date_format(now(), '%h:%i') >= ws.StartTime and
date_format(now(), '%h:%i') <= ws.EndTime and
date_format(now(), '%W') = ws.Weekday
) or
(ws.StartTime > ws.EndTime and
((date_format(now(), '%h:%i') >= ws.StartTime and
date_format(now(), '%W') = ws.Weekday
) or
(date_format(now(), '%h:%i') <= ws.EndTime and
date_format(date_sub(now(), interval 1 day), '%W') = ws.Weekday
)
)
);

关于mysql - 使用MySQL获取当前在线员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com