我正在尝试将表中的数据插入到另一个表中,第一个表是varchar,第二个表是日期。
我知道convert
,几乎每一行(在varchar表中)都有正确的格式。但有些是错的。
我有70000行,如果我尝试插入所有这些行,我收到错误“将varchar数据类型转换为日期时间数据类型会导致超出范围的值。”也许是因为一个月插入了30天,或者插入了31天,或者插入了0天。
我需要的是一种跳过错误并插入其余部分的方法,并且知道哪些行错误的方法也会非常有用。
你们摇滚的人,
答案 0 :(得分: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 :(得分:0)
为了将来的研究,排除错误的记录应该更容易:
SELECT CAST(CharDateColumn as Date)
FROM ABC
WHERE IsDate(CharDateColumn) = 1;