Как восстановить правильную дату, если она была вставлена ​​в последнее время

Если у меня есть ZKTime машина для регистрации посещаемости сотрудников.

Иногда эта машина вставляет большую часть транзакций в базу данных sql server с неправильной более поздней датой, например

8-2103 вместо 11-2016

введите описание изображения здесь


введите описание изображения здесь


Каковы возможные причины этой проблемы и как восстановить правильную дату, если я не могу обнаружить проблему?

9

Решение

Я посмотрел на ссылку поставщика, которую вы предоставили, и это не помогает в этом случае. Боюсь, мы не сможем ответить на этот вопрос из-за элементов вне SQL Server. Я полагаю, что вам нужно будет связаться с поддержкой поставщика для этого.

Вопросы, которые вам необходимо выяснить:

  1. Как машина времени рассчитывает данные CheckTime?
  2. Как машина времени хранит данные CheckTime?
  3. Как машина создает файл для экспорта в SQL Server?

Это может быть связано с тем, как система записывает данные CheckTime или как она экспортирует / записывает данные на сервер SQL.

Что касается исправления проблемы, то основное исправление будет исправлено, но, поскольку существуют разные даты, вам нужно будет написать уникальное обновление для каждого случая.

4

Другие решения

Одним из возможных решений является использование триггера для проверки даты и соответствующего обновления даты. Предполагая, что таблица имеет первичный ключ в качестве идентификатора, если во вновь вставленной строке указана дата, выходящая за пределы сегодняшнего дня, она может быть сброшена до текущей даты и времени, поскольку запись о посещаемости сотрудников не может быть в будущем.

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
1

По вопросам рекламы [email protected]