我正在構建一個考勤模塊。SQL如何識別第一次和最後一次從一天的時間戳記錄
該過程從導入Timesheet員工文件開始。
的時間表員工文件有以下欄目(來自同一名員工紅圈顯示的時間記錄)
的傳感器列,讓我們知道,如果是的入口傳感器(ENT)或退出傳感器(EXT)
該信息被加載到臨時表中我的SQL數據庫。我的員工表有一個RFID_Card列,所以我可以在時間表中匹配導入的數據。
然後,我必須運行一個存儲過程,我可以在每個時間記錄插入到我的「employee_timerecord」表中。該表是這樣的:
- 僱員(KEY):僱員ID(從員工表)
- 時間戳(KEY):時間戳記錄(日期時間)從我進口數據
- SensorType(BOOL):0 =入口,1 = EXIT
- TimeStamp_Type(TINYINT):1 =第一天入口,2 =最後一天入口,3 =間工作時間,4 = ....等
我的存儲過程SQL腳本應該是這個樣子:
INSERT INTO employee_timerecord (employeeid, timestamp,sensortype,timestamp_type)
SELECT
em.employeeid,
tsi.timestamp,
s.sensortype, -- 0 = Entrance, 1 = Exit
--HERE I HAVE TO CHECK IF THE TIME RECORD FOR THAT EMPLOYEE
--IS THE FIRST ENTRANCE IN THE DAY THEN ASSING A 1, IF ITS THE LAST
--EXIT IN THE DAY THEN ASSIGN A 2, etc
FROM timesheet_import_temp tsi
JOIN sensor s ON s.sensorcode = tsi.sensorcode
JOIN employee em ON em.rfidcard = tsi.rfidcard
從上面的示例表
所以,我應該得到的是:
Employee with RFID 76:23146: the first timestamp in the day was at: 01/04/2014 06:57:40 a. m.
Employee with RFID 76:23146: the last timestamp in the day was at: 01/04/2014 15:04:48 p. m.
任何線索?
做員工通宵工作,或者你可以假設員工將進入並在同一天離開? – attila
有一些員工(取決於他們的班次)很快就會在一夜之間工作。 :)似乎你真的瞭解時間和出勤。謝謝 – VAAA
@VAAA我的建議是否適合你?它應該如果你不處理過夜班次。 – plalx