Ошибка преобразования TSQL NVARCHAR внутри оператора CASE
этот выбор сводит меня с ума.
Ошибка:
ошибка преобразования преобразование значения 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
1 ответов
вы получаете эту ошибку из-за неявного преобразования. Одна часть 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