SQLServer - 在插入

时间:2016-07-29 22:09:07

标签: sql-server sql-server-2014

我正在尝试将表中的数据插入到另一个表中,第一个表是varchar,第二个表是日期。

我知道convert,几乎每一行(在varchar表中)都有正确的格式。但有些是错的。

我有70000行,如果我尝试插入所有这些行,我收到错误“将varchar数据类型转换为日期时间数据类型会导致超出范围的值。”也许是因为一个月插入了30天,或者插入了31天,或者插入了0天。

我需要的是一种跳过错误并插入其余部分的方法,并且知道哪些行错误的方法也会非常有用。

你们摇滚的人,

2 个答案:

答案 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;
相关问题