我有一個500萬條日誌記錄存儲爲char(10)格式爲yyyy/mm/dd的表。我需要把這些轉化爲datetime,所以我用:SQL更新varchar到日期錯誤
UPDATE [Database].[dbo].[Table]
SET [DoB]=convert(datetime,[DoBText],103)
GO
但我得到的錯誤:
「varchar數據類型爲datetime數據類型的轉換導致的超出範圍值。」
現在,我已經嘗試修復數據,所以這不會發生 - 即不低於1900或2000以上的「yyyy」,沒有「dd」高於30(2月28日),沒有「mm」高於12或低於0.沒有NULL。
轉換仍然失敗。
有沒有什麼辦法可以讓SQL跳過對錯誤的轉換,然後繼續?
E.g.是這樣的:
SET [DoB]= try to do [DoB]=convert(datetime,[DoBText],103) if fails SET [DoB] = NULL
感謝 卡爾
有些月份有31天 - 我希望你沒有破壞你的數據:S – 2009-09-02 08:24:30
此外,沒有月份零 - 月份應該是1-12包括在內。 – 2009-09-02 08:25:02