这个选择让我发疯 错误是:
转换错误将nvarchar值'17 .30 h'转换为int数据类型。
数据是:
(DateTime) (Nvarchar) (DateTime)
DATAINICI DATAMANUAL DATAFI
null 17.30 h 10/01/2015
01/01/2015 20.30 h null
声明是:
CASE WHEN dbo.Activitat.DataInici is null
THEN DATEPART(DAY,Activitat.Datafi)
ELSE CONVERT(NVARCHAR(50), dbo.Activitat.DataManual)
END
答案 0 :(得分:7)
由于隐式转换,您收到此错误。 CASE
的一部分返回NVARCHAR(50)
,即CONVERT(NVARCHAR(50), dbo.Activitat.DataManual)
无法转换为int
而另一部分返回int
,即DATEPART(DAY,Activitat.Datafi)
。
这样的事情也会返回相同的错误。
SELECT CASE WHEN 1=2 THEN 1 ELSE 'errorstring' END
您应该CONVERT
并在两种情况下都返回NVARCHAR(50)
,因此没有隐式转换。这样的事情。
CASE WHEN dbo.Activitat.DataInici is null
THEN CONVERT(NVARCHAR(50),DATEPART(DAY,Activitat.Datafi))
ELSE CONVERT(NVARCHAR(50), dbo.Activitat.DataManual)
END