我在创建基于employeeno
,checktime
和id
更新行的存储过程时遇到了困难。
这是我的表:
我正在创建员工出勤系统。基本上我们有生物识别手指扫描设备来跟踪时间并将其存储到数据库,但设备无法存储时间作为结帐,它只能像CheckType
列中所示进行检查。
现在我要做的是将Checktype
列从I
更改为O
示例:
如果员工465-04-01在上午7:46登录,则应将其记录为I
,并且当同一员工在当天上午7:47再次尝试登录时,应将其记录为现在O
,应该包含自动编号employeeno, id
,因为它将是更新记录的基础。
如果员工在当天下午4点登录,则应将其记录为I
,然后下一次登录应在同一天O
。
答案 0 :(得分:1)
每次员工登录时检查当前时间之前的CHECKTIME
在SP中使用此类查询
IF((SELECT(SELECT * FROM TBL_NAME
WHERE CHECKTIME < CURRENT_TIMESTAMP and CHECKTIME > (select CONVERT(date,CURRENT_TIMESTAMP)))%2)=0)
BEGIN
--//HERE WRITE YOUR CODE SETTING CHECKTYPE AS 1 (EMPLOYEE ENTER)
END
ELSE
BEGIN
--//HERE WRITE YOUR CODE SETTING CHECKTYPE AS 0 (EMPLOYEE EXIT)
END
它不会检查反弹是偶数还是奇数。如果计数为偶数,则返回1
。这意味着员工已经输入。否则如果计数为奇数,则返回0
。这意味着员工已经过了EXITED。
(这里0是偶数)
当值是第一次输入时(也是第三次,第五次,第七次,......时间),值将是1
,当输入值时,该值将是0
第二次(也是当第四,第六,第八,......时代)