Неявное преобразование из типа данных datetime в int недопустимо, сделайте первое значение символом
SELECT ISNULL('1',getdate())
Кстати, просто учтите, что ISNULL не является ANSI, является приоритетным и принимает только 2 параметра, COALESCE принимаетнамного больше
DECLARE @1 INT,@2 int, @3 INT, @4 int
SELECT @4 = 6
SELECT COALESCE(@1,@2,@3,@4)
Это утверждение ниже неверно
Функция IsNull проверяет первое значение, если оно пустое или пустое, то возвращает следующее значение.
это не заботится о пробелах
запустите это
SELECT ISNULL('','A') -- Blank is returned not A
SELECT ISNULL(NULL,'A') -- A is returned because the first value is NULL
другое различие между ISNULL и COALESCE в том, что ISNULL вернет ту же длину, что и первый параметр
запустите это
DECLARE @c CHAR(3)
SELECT ISNULL(@c,'not available') -- not
SELECT COALESCE(@c,'not available') --not available