如果最近插入的话,如何恢复正确的日期

时间:2016-11-10 12:15:31

标签: php sql-server sdk time-and-attendance

如果我有ZKTime台机器来注册员工的出勤率。

有时这台机器会在sql server db中插入大量事务,而日期错误就像

一样

static代替8-2103

enter image description here

enter image description here

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

2 个答案:

答案 0 :(得分:4)

我查看了您提供的供应商链接,但在这种情况下无效。由于SQL Server以外的项目,我担心我们无法回答这个问题。我相信您需要联系供应商支持。

您需要了解的问题是:

  1. 时间机器如何计算CheckTime数据?
  2. 时间机器如何存储CheckTime数据?
  3. 机器如何创建要导出到SQL Server的文件?
  4. 这似乎是系统如何记录CheckTime数据的问题,或者是如何将数据导出/写入SQL服务器的问题。

    就纠正问题而言,基本的更新声明会修复它,但由于有不同的日期,您需要为每个案例编写一个唯一的更新。

答案 1 :(得分: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