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

Sql server 使用不同值更新一列的存储过程,sql-server,stored-procedures,time-and-attendance,Sql Server,Stored Procedures,Time And Attendance,我在创建基于employeeno、checktime和id更新行的存储过程时遇到困难 这是我的桌子: 我正在创建一个员工考勤系统。基本上,我们有生物识别手指扫描设备来跟踪时间并将其存储到数据库中,但该设备无法存储时间,因为它只能按CheckType列所示进行签入 现在我要做的是将Checktype列从I更改为O 例如: 如果员工465-04-01在上午7:46登录,则应记录为I,当同一员工在当天上午7:47再次尝试登录时,应记录为O now,employeeno,id(自动编号),因为这将是更新

我在创建基于employeeno、checktime和id更新行的存储过程时遇到困难

这是我的桌子:

我正在创建一个员工考勤系统。基本上,我们有生物识别手指扫描设备来跟踪时间并将其存储到数据库中,但该设备无法存储时间,因为它只能按CheckType列所示进行签入

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

例如:

如果员工465-04-01在上午7:46登录,则应记录为I,当同一员工在当天上午7:47再次尝试登录时,应记录为O now,employeeno,id(自动编号),因为这将是更新记录的基础

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


你能帮帮我吗?我需要一个存储过程来执行此操作,因为我在这方面没有足够的经验。。请帮帮我

每次员工登录时,检查当前时间之前的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。这意味着该员工已离职。 这里0是偶数


第一次输入值时,该值将为1,第三、第五、第七。。。第二次输入值时,以及第四、第六、第八次输入值时。。。泰晤士报

谢谢,但checktime不应与当前的时间戳进行比较,我只需要检查日期和时间是否与员工相符。否,你能做到吗?@Dhenn我没有弄清楚你的意思。你能详细说明你的要求吗?你可以在更新查询中使用decode函数:checktype=decodechecktype,'I','O','I'谢谢你的建议,但我需要它是自动的..我能问一下你为什么要存储用户I'd和员工no吗?看起来您只需要这些列中的一列。。可能是用户Id,我猜员工号与用户Id有关?是的,用户Id与员工号有关..我不认为存储过程适合您描述的逻辑。这听起来像是你正在编写的软件的关键部分。数据层不应负责确定用户是否在,应用程序应负责确定用户是否在,并将正确的数据发送到数据层进行存储。