如果我有ZKTime机器来登记员工的考勤。
有时这台机器会在 sql server db 中插入大量事务,但稍后日期错误,例如
8-2103
代替11-2016
这个问题的可能原因是什么?如果我无法检测到问题,如何恢复到正确的日期?
如果我有ZKTime机器来登记员工的考勤。
有时这台机器会在 sql server db 中插入大量事务,但稍后日期错误,例如
8-2103
代替11-2016
这个问题的可能原因是什么?如果我无法检测到问题,如何恢复到正确的日期?
我查看了您提供的供应商链接,但在这种情况下没有帮助。由于 SQL Server 之外的项目,恐怕我们无法回答这个问题。我相信您需要为此联系供应商支持。
您需要了解的问题是:
这似乎是系统如何记录 CheckTime 数据的问题,或者是系统如何将数据导出/写入 SQL Server 的问题。
就纠正问题而言,基本更新声明将解决它,但由于日期不同,您需要为每种情况编写唯一更新。
一种可能的解决方案是使用触发器来验证日期并相应地更新日期。假设该表以主键为id,如果新插入的行的日期超过今天,则可以将其重置为当前日期时间,因为员工的考勤记录不能是将来的。
CREATE TRIGGER CorrectTheDate on Config
FOR INSERT
AS
DECLARE @CT DateTime
DECLARE @id int
SELECT @CT = i.CheckTime FROM inserted i;
SELECT @id= i.id FROM inserted i;
if(@CT >= DATEADD(dd,1,getdate()))
UPDATE MyTable SET CheckTime=getdate() WHERE id=@id
GO