В MSDN
четко сказано, что:
Аргумент даты не может быть увеличен до значения вне диапазона его типа данных. В следующих инструкциях числовое значение, которое добавляется к значению даты, превышает диапазон типа данных даты. Возвращается следующее сообщение об ошибке: «Добавление значения в столбец datetime вызвало переполнение.»
И пример:
SELECT DATEADD(year,2147483647, '2006-07-31');
SELECT DATEADD(year,-2147483647, '2006-07-31');
, который вызывает ошибку:
"Добавление значения в столбец datetime вызвало переполнение."
Это кажется правильным. Но почему я получаю ту же ошибку при выполнении этого оператора SQL:
SELECT DATEDIFF(YY,'1013-12-12',DATEADD(YY,-300,getdate()))
более конкретно и только:
SELECT DATEADD(YY,-300,getdate())