如果我有ZKTime機器來註冊員工的出勤。如何恢復最近插入的日期
有時在SQL Server數據庫有錯日後交易的本機插入散裝像
8-2103
而不是11-2016
如果我無法檢測到問題,該問題的可能原因是什麼,以及如何恢復到正確的日期?
如果我有ZKTime機器來註冊員工的出勤。如何恢復最近插入的日期
有時在SQL Server數據庫有錯日後交易的本機插入散裝像
8-2103
而不是11-2016
如果我無法檢測到問題,該問題的可能原因是什麼,以及如何恢復到正確的日期?
我看你提供的供應商聯繫,並沒有在這種情況下幫助。由於SQL Server以外的項目,我們恐怕無法回答這個問題。我相信您需要聯繫供應商支持部門。
你需要找出的問題是:
這似乎是系統如何記錄CheckTime數據或如何將數據導出/寫入SQL服務器的問題。
至於糾正問題一個基本的更新聲明將修復它,但由於有不同的日期,你將需要爲每個案件編寫一個獨特的更新。
,如果它是靜態的錯誤,您可以
update table set Checktime = DATEADD(YEAR, -97, dateadd(MONTH,-4,checktime)) where checktime > '2017-12-12'
例如
不,它不是一個靜態錯誤 –
一個可能的解決方案是利用觸發器來驗證日期並相應地更新日期。假設表中的主鍵爲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 [email protected]
GO
雖然這個想法是好的,但代碼需要一些調整,因爲它假定觸發器一次會觸發一條記錄,而且當服務器不可用時,大多數機器可以脫機工作網絡斷開或服務器維護等。在這種情況下,讀者將在不同於讀者實際時間的時間將記錄發送到服務器。 –
如果插入了錯誤的日期,您將如何知道正確的日期是什麼? – mendosi
@mendosi:我不知道我嘗試通過'S_T_NO'的順序來猜測最近的日期 –
看起來像是插入時使用的錯誤日期時間格式...您無法恢復 - 它是損壞的數據。 – Narf