Выражение является выражением является выражением.И - как и цвета многих роз - имеет только один тип.Это не может быть как строка, так и дата.
По правилам приоритета типа SQL , когда выбирается строка и число, номер является доминирующим типом;поэтому строка преобразуется в число.И вы получите ошибку преобразования.
Итак, используйте CONVERT()
, CAST()
или FORMAT()
:
(CASE WHEN CreatedDateTime IS NOT NULL AND migrationdatetime IS NOT NULL
THEN CAST(VARCHAR(255), DATEDIFF(DAY, CreatedDateTime, MigrationDateTime))
ELSE 'not moved to prd'
END)
Конечно, учитывая правила NULL
s в SQLэто проще записать как:
COALESCE(CAST(VARCHAR(255), DATEDIFF(DAY, CreatedDateTime, MigrationDateTime)),
'not moved to prd'
)