使用不同值更新一列的存储过程

时间:2012-08-25 05:17:12

标签: sql-server stored-procedures time-and-attendance

我在创建基于employeenochecktimeid更新行的存储过程时遇到了困难。

这是我的表:

enter image description here

我正在创建员工出勤系统。基本上我们有生物识别手指扫描设备来跟踪时间并将其存储到数据库,但设备无法存储时间作为结帐,它只能像CheckType列中所示进行检查。

现在我要做的是将Checktype列从I更改为O

示例:

如果员工465-04-01在上午7:46登录,则应将其记录为I,并且当同一员工在当天上午7:47再次尝试登录时,应将其记录为现在O,应该包含自动编号employeeno, id,因为它将是更新记录的基础。

如果员工在当天下午4点登录,则应将其记录为I,然后下一次登录应在同一天O

你能帮帮我吗?我需要一个存储过程这样做,因为我没有足够的经验...请帮助我!

1 个答案:

答案 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第二次(也是当第四,第六,第八,......时代)