如果我有ZKTime机器来登记员工的考勤记录。
有时候这个机器会将一大堆交易数据插入到SQL Server数据库中,但日期却不正确,例如:
什么可能是这个问题的原因?如果我无法检测到问题,如何恢复到正确的日期?
有时候这个机器会将一大堆交易数据插入到SQL Server数据库中,但日期却不正确,例如:
8-2103
,而不是 11-2016
。
什么可能是这个问题的原因?如果我无法检测到问题,如何恢复到正确的日期?
8-2103
,而不是 11-2016
。
一种可能的解决方案是利用触发器来验证日期并相应地更新日期。假设表的主键为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