[英]Time Attendance query in Microsoft access
您可以使用自加入(獲取任何 Checkin 行的 Checkout 時間); 使用子查詢(如果同一用戶多次簽入/簽出,則刪除多個簽出行)。
這個假設您在表中只有一天的數據,並且它為每個 session(簽入/簽出)打印多行:
SELECT
CI.USERID,
format(dateadd('n',
datediff('n', CI.CHECKTIME, CO.CHECKTIME),
#01/01/1900#),'hh:nn') as HHMM
FROM MyTbl CI
inner join
MyTbl CO
ON CO.USERID=CI.USERID
WHERE
CO.CHECKTIME >= CI.CHECKTIME
AND CO.CHECKTYPE = 'O'
AND CI.CHECKTYPE = 'I'
AND NOT EXISTS
(SELECT *
FROM MyTbl COO
WHERE COO.USERID=CO.USERID
AND COO.CHECKTIME>=CI.CHECKTIME
AND COO.CHECKTYPE='O'
AND COO.CHECKTIME < CO.CHECKTIME
);
添加到 1900-01-01 是為了將找到的分鍾轉換為日期時間值,以便我可以使用格式 function 以您想要的格式顯示。
謝謝大家,我得到了答案:
Select (B.Name),FORMAT(C.CHECKTIME,'hh') - FORMAT(A.CHECKTIME,'hh') AS TOTAL from(
[CHECKINOUT] AS A
INNER JOIN [USERINFO] AS B ON A.USERID=B.USERID )
INNER JOIN [CHECKINOUT] AS C ON B.USERID=C.USERID where A.CHECKTYPE='I' and C.CHECKTYPE='O' AND FORMAT(A.CHECKTIME,'yyyy-mm-dd') LIKE '%2022-07-01%' AND FORMAT(C.CHECKTIME,'yyyy-mm-dd') LIKE '%2022-07-01%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.