运行时异常:
将nvarchar数据类型转换为日期时间数据类型 导致了超出范围的价值。
代码:
INSERT INTO [Migrated].[dbo].[MyTables] (LegacyId,DeedDate)
SELECT DISTINCT
a.[IPLID], CONVERT(nvarchar(255), a.[Deeddate], 127)
FROM
[Legacy].[dbo].[MyTables2] as a
希望我做得正确。但为什么它会出现上述错误?
我正在使用SQL Server 2014 express。
注意:您能否告诉我如何找出MyTables2
Deeddate
上的错误?我的意思是不同的日期格式等等。或者用NULL
替换这些日期。
答案 0 :(得分:2)
我使用ISDATE function找出了缺陷日期并将其删除。之后就可以了。感谢:)
这样就可以了:
INSERT INTO [Migrated].[dbo].[MyTables] (LegacyId,DeedDate)
SELECT DISTINCT
a.[IPLID], CONVERT(nvarchar(255), a.[Deeddate], 127)
FROM
[Legacy].[dbo].[MyTables2] as a
答案 1 :(得分:0)
在SQL Server 2012+中,您可以使用TRY_CONVERT()
来返回NULL
而不是错误:
INSERT INTO [Migrated].[dbo].[MyTables](LegacyId, DeedDate)
SELECT DISTINCT a.[IPLID], TRY_CONVERT(nvarchar(255), a.[Deeddate], 127)
FROM [Legacy].[dbo].[MyTables2] a;
您还可以使用它来确定格式不正确的位置:
SELECT a.*
FROM (SELECT a.[IPLID], a.[Deeddate],
TRY_CONVERT(nvarchar(255), a.[Deeddate], 127) as datestr
FROM [Legacy].[dbo].[MyTables2] a
) a
WHERE datestr IS NULL;