9

如果我有ZKTime机器来登记员工的考勤。

有时这台机器会在 sql server db 中插入大量事务,但稍后日期错误,例如

8-2103代替11-2016

在此处输入图像描述


在此处输入图像描述


这个问题的可能原因是什么?如果我无法检测到问题,如何恢复到正确的日期?

4

2 回答 2

4

我查看了您提供的供应商链接,但在这种情况下没有帮助。由于 SQL Server 之外的项目,恐怕我们无法回答这个问题。我相信您需要为此联系供应商支持。

您需要了解的问题是:

  1. 时间机器如何计算 CheckTime 数据?
  2. 时间机器如何存储 CheckTime 数据?
  3. 机器如何创建要导出到 SQL Server 的文件?

这似乎是系统如何记录 CheckTime 数据的问题,或者是系统如何将数据导出/写入 SQL Server 的问题。

就纠正问题而言,基本更新声明将解决它,但由于日期不同,您需要为每种情况编写唯一更新。

于 2016-11-14T15:48:37.393 回答
1

一种可能的解决方案是使用触发器来验证日期并相应地更新日期。假设该表以主键为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
于 2016-11-14T20:37:22.483 回答