Нечто подобное (может понадобиться поменять местами 1 и 0, не проверено)
datediff(month,[DateEngaged],getdate()) +
CASE WHEN DATEPART(day, [DateEngaged]) < DATEPART(day, getdate()) THEN 1 ELSE 0 END
DATEDIFF измеряет границы месяца, например, 00:00 первого числа каждого месяца, а не годовщины дня месяца
Редактировать: после просмотра комментария ОП вы должны вычесть 1, если день начала> день окончания
DATEDIFF (month, DateEngaged, getdate()) -
CASE
WHEN DATEPART(day, DateEngaged) > DATEPART(day, getdate()) THEN 1 ELSE 0
END
Итак, с 20 декабря по 13 января DATEDIFF выдает 1, а затем 20> 13, поэтому вычтите 1 = ноль месяцев.