2013-01-15 62 views
0

任務: 我們正在驗證2個不同表(具有相同結構)中的數據。我們試圖在記錄上使用校驗和功能。SQL中datetime字段的校驗和

問題: 表中的記錄是相同的。但是當我們使用校驗和(*)時,它會給出不同的校驗和。

SELECT statusName,CheckSum(*) from OrderStatus 

如果我計算校驗和,不包括日期時間列,它給兩個表中的相同的值。

SELECT statusName,CheckSum(StatusName,CreatedByUser,ModifiedByUser) from OrderStatus 

列在表: StatusName,CreatedByUser,ModifiedByUser,CreatedDateTime,最後修改時間

如何通過包括datetime列解決這個問題,。

任何幫助表示讚賞!

+0

您已經驗證DateTime值實際上是兩張表的匹配記錄相同嗎? –

+0

是的。我將一些數據從源複製到目標,以驗證查詢。因此目標中的數據是源的精確副本。 – Anusha

回答

1

對於校驗和,列的順序有所不同。

將第一個查詢中的*替換爲完全相同的列列表。 CheckSum應該在日期和日期時間工作。

0

它似乎在爲我工作。這裏是SQL Fiddle

我懷疑事情是關閉您的日期時間列 - 運行此看看是否有什麼不同的是:

SELECT * 
FROM OrderStatus OS1 
LEFT JOIN OrderStatus OS2 ON OS1.CreatedDateTime = OS2.CreatedDateTime AND OS1.LastModifiedTime=OS2.LastModifiedTime 
WHERE OS2.LastModifiedTime IS NULL 
0

試試這個:

SELECT statusName, 
CheckSum(CreatedByUser,ModifiedByUser,CreatedDateTime,LastModifiedTime) 
from OrderStatus