2016-07-29 30 views
0

我試圖從表中插入數據到另一個表中,第一個表是varchar,第二個表是日期。SQLServer - 在插入時跳過錯誤的行

我知道convert幾乎每行(在varchar表中)都有正確的格式。但有些人錯了。

我有70000行,如果我嘗試插入所有這些,我得到錯誤「將varchar數據類型轉換爲日期時間數據類型導致超出範圍的值。也許因爲一個月有30天插入31或可能一天插入爲0.

我需要的是一個跳過錯誤的方法,插入其餘的方法,以及知道哪些行是錯誤的方法超級有用。

THX的傢伙你搖滾,

+0

添加一個'where'子句以過濾掉錯誤的格式 –

+2

使用Try_PARSE(),TRY_CONVERT()填充一個帶有乾淨數據的臨時表,您的選擇,然後從臨時表中插入到您的新表中。 – dfundako

+0

爲您正在使用的特定版本的SQL Server添加標籤。 –

回答

1

THX的傢伙,我用@dfundako答案;與TRY_CONVERT我能看到哪些行是錯誤的(因爲它返回null)和插入是正確的代碼是在這裏

select 
TRY_CONVERT(datetime, 
CONCAT (CONVERT(VARCHAR(10),db1.AnoCreaReg),'-', 
CONVERT(VARCHAR(10),db1.MesCreaReg),'-', 
CONVERT(VARCHAR(10),db1.DiaCreaReg))end) from Herpetologia.dbo.especimenes db1 
1

它應該是更容易只是排除未來的研究不正確的記錄:

SELECT CAST(CharDateColumn as Date) 
FROM ABC 
WHERE IsDate(CharDateColumn) = 1;