如何将时钟从 PHP 中的 1 个相同列中分离出来

问题描述

我办公室的考勤机有点问题。我想将 1 列中的进出时间分开。我在两周内尝试了很多查询,但无法得到我想要的。我想将 PunchDatetime 列中的值分成 2 个新列,即输入和输出,之后我想将此数据移动到 MysqL。我使用的数据库是 Microsoft Access,我使用的语言是 PHP。这是我的 ms access 数据库

我的 MS Access 数据库

My ms access database

和我的期望,我会有这样的输出

我的期望:

My expectations

有人可以帮我吗?之前感谢并抱歉我的英语不好

解决方法

您可以使用 MIN/MAX 子查询来获取您想要的信息:

SELECT DISTINCT T.CardNo,Format(T.PunchDateTime,"dd/mm/yyyy") AS PunchDate,(SELECT Format(MIN(S.PunchDateTime),"hh:nn") FROM Tran_MachineRawPunch AS S WHERE S.CardNo=T.CardNo AND Format(S.PunchDateTime,"dd-mm-yyyy")=Format(T.PunchDateTime,"dd-mm-yyyy")) AS PunchIn,(SELECT Format(MAX(S.PunchDateTime),"dd-mm-yyyy")) AS PunchOut
FROM Tran_MachineRawPunch AS T

请注意,对于只有一个条目的任何一天(例如 2 月 2 日和 2 月 6 日),这两个时间将相同 - 您可以通过转换为 GROUP BY 查询并查看条目数等于 2,否则添加 where 子句以排除那些两次匹配的条目。

问候,

,

这将在两天内完成:

Select
    [Employee ID],Int([PunchDatetime]) As [Date],Min([PunchDatetime]) As [In],Max([PunchDatetime]) As [Out]
From
    Tran_MachineRawPunch
Group By
    [Employee ID],Int([PunchDatetime])

对于那些只用一拳的日期,它会返回相同的时间。

In 和 Out 值必须仅针对时间进行格式化。