У кого-нибудь есть определение этой функции или объяснение этого поведения?
Потому что (вычитание 2014-8-1) - 2005, а month из «начала времени» + 2005 дней - 6
month
select(dateadd(d,2005 ,'1900-01-01'))
1905- 06 -2900: 00: 00.000
Неявное приведение почти так же плохо, как JavaScript!