我有一个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