«Добавление значения в столбец« datetime »вызвало переполнение».

В 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()) 

Первый результат google для 'sql datetime range' . 1 января 1753 года. Это ваша нижняя граница.

В комментарии к вопросу добавлены эти мелочи о происхождении этой нижней границы.

Если вы используете преобразование DateTime с полем, используйте оператор case в преобразовании, чтобы проверить, больше ли это поле, чем 1 или 1000000, и вам больше не придется этого делать.

  • Как использовать пользовательский тип таблицы в функции для возврата?
  • Как я могу разделить одну строку на два разных столбца sql
  • Необязательные параметры в SQL UDF без ключевого слова DEFAULT
  • Как вставить данные из String в таблицу?
  • Определение функции в sql-сервере
  • Создать автоматический код
  • Как группировать по месяцам дату, используя функцию в выражении select
  • Обновление каждой строки в таблице
  • Функция не сохраняет то, что я ожидаю
  • Результат SELECT как параметр в пользовательской функции table-parameter
  • Возвращаемое число с возвратом SQL
  • Давайте будем гением компьютера.