Если у меня есть ZKTime машина для регистрации посещаемости сотрудников.
Иногда эта машина вставляет большую часть транзакций в базу данных sql server с неправильной более поздней датой, например
8-2103
вместо 11-2016
Каковы возможные причины этой проблемы и как восстановить правильную дату, если я не могу обнаружить проблему?
Я посмотрел на ссылку поставщика, которую вы предоставили, и это не помогает в этом случае. Боюсь, мы не сможем ответить на этот вопрос из-за элементов вне SQL Server. Я полагаю, что вам нужно будет связаться с поддержкой поставщика для этого.
Вопросы, которые вам необходимо выяснить:
Это может быть связано с тем, как система записывает данные CheckTime или как она экспортирует / записывает данные на сервер SQL.
Что касается исправления проблемы, то основное исправление будет исправлено, но, поскольку существуют разные даты, вам нужно будет написать уникальное обновление для каждого случая.
Одним из возможных решений является использование триггера для проверки даты и соответствующего обновления даты. Предполагая, что таблица имеет первичный ключ в качестве идентификатора, если во вновь вставленной строке указана дата, выходящая за пределы сегодняшнего дня, она может быть сброшена до текущей даты и времени, поскольку запись о посещаемости сотрудников не может быть в будущем.
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