Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中从同一列中分离时钟输入和输出_Php_Ms Access_Time And Attendance - Fatal编程技术网

如何在PHP中从同一列中分离时钟输入和输出

如何在PHP中从同一列中分离时钟输入和输出,php,ms-access,time-and-attendance,Php,Ms Access,Time And Attendance,我办公室的考勤机有点问题。我想把1列中的输入和输出时间分开。我在两周内尝试了这么多的查询,但我无法得到我想要的。我想把这些值分开​​从PunchDatetime列到两个新列,即in和out,然后我想将这些数据移动到MySQL。我使用的数据库是MicrosoftAccess,我使用的语言是PHP。这是我的ms access数据库: 我的MS Access数据库: 我的期望是,我会有这样的输出: 我的期望: 有人能帮我吗?感谢您的光临,并为我糟糕的英语表达歉意您可以使用最小/最大子查询来获取所需

我办公室的考勤机有点问题。我想把1列中的输入和输出时间分开。我在两周内尝试了这么多的查询,但我无法得到我想要的。我想把这些值分开​​从PunchDatetime列到两个新列,即in和out,然后我想将这些数据移动到MySQL。我使用的数据库是MicrosoftAccess,我使用的语言是PHP。这是我的ms access数据库:

我的MS Access数据库:

我的期望是,我会有这样的输出:

我的期望:


有人能帮我吗?感谢您的光临,并为我糟糕的英语表达歉意

您可以使用最小/最大子查询来获取所需信息:

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),"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 PunchOut
FROM Tran_MachineRawPunch AS T
请注意,对于只有一个条目的任何一天(例如02 Feb和06 Feb),这两个时间都是相同的-您可以通过转换到
GROUP by
查询并查看条目计数是否等于2来排除这些条目,或者添加where子句以排除两个时间匹配的条目


关于,

这几天只需两拳:

选择
[员工ID],
Int([PunchDatetime])作为[Date],
最小值([PunchDatetime])为[In],
最大值([PunchDatetime])为[Out]
从…起
变速器冲压机
分组
[员工ID],
Int([PunchDatetime])
它将在相同的时间返回这些日期的输入和输出,只需一次打孔


输入和输出值的格式只能用于时间。

非常感谢!你帮了我大忙古斯塔夫!伟大的那么请把答案记下来。