如何从下一个日期Mysql获取时间

问题描述 投票:0回答:1

我有这样的表Att_Log:

Emp_ID 日期_Att 时间_Att
E-0123 2024-01-02 08:05:56
E-0123 2024-01-02 17:02:23
E-0124 2024-01-02 21:55:56
E-0124 2024-01-03 06:02:23

我期望的结果是这样的:

Emp_ID 日期 In_Time Out_Time
E-0123 2024-01-02 08:05:56 17:02:23
E-0124 2024-01-02 21:55:56 06:02:23

如果 In_Time >= 21:00:00,则从以下 Date_Att 获取 min(Time_Att) 作为 Out_Time

如何在mysql服务器中查询?

我可以使用此查询查询最小和最大 Time_Att:

选择 Emp_ID、Date_Att、Min(Time_Att) 作为 InTime、Max(Time_Att) 作为 OutTime, 来自 Att_Log

但我不知道如何得到上面的结果。如果有人可以提供帮助,我将非常感激。预先感谢您。

sql mysql grouping time-and-attendance
1个回答
0
投票

可能不是您想要的,但给出了问题中示例数据的预期结果。
(假设 DATE_ATT 列的数据类型为 DATE,TIME_ATT 列的数据类型为 TIME。请参阅 MySQL 文档。)

select EMP_ID
      ,date(min(timestamp(DATE_ATT, TIME_ATT))) as THE_DATE
      ,time(min(timestamp(DATE_ATT, TIME_ATT))) as IN_TIME
      ,time(max(timestamp(DATE_ATT, TIME_ATT))) as OUT_TIME
  from ATT_LOG
 group by EMP_ID

参考thisdb<>fiddle以及这些SO问题:

© www.soinside.com 2019 - 2024. All rights reserved.