Я понял, почему моя функция недетерминированная. Он полагается на операторы Convert с кодами стилей 1, 3, а затем с другими кодами выше 100.
Согласно MSDN конвертировать:
Детерминированный, если не выполняется одно из следующих условий:
Тип источника: sql_variant.
Тип цели - sql_variant, а тип источника недетерминированный.
Тип источника или цели - datetime или smalldatetime, другой тип источника или цели - символьная строка, и указывается недетерминированный стиль. Чтобы быть детерминированным, параметр стиля должен быть константой. Кроме того, стили, меньшие или равные 100, являются недетерминированными, за исключением стилей 20 и 21. Стили больше 100 являются детерминированными, за исключением стилей 106, 107, 109 и 113.