Я получил это в статусе INSERT для MSSQL 2008
System.Data.SqlClient.SqlException: Преобразование данных datetime2 тип к типу данных даты и времени в значении вне диапазона.
Я получил это в статусе INSERT для MSSQL 2008
System.Data.SqlClient.SqlException: Преобразование данных datetime2 тип к типу данных даты и времени в значении вне диапазона.
Определяет дату, которая сочетается с временем суток, которое основано на 24-часовом часе. datetime2 можно рассматривать как расширение существующего типа datetime, имеющего более высокий диапазон дат, большую дробную точность по умолчанию и дополнительную точность, заданную пользователем.
Тип данных datetime SQLServer - это гораздо меньший диапазон допустимых значений, чем тип данных .net datetime. Тип datetime SQLServer в основном поддерживает gregorian calendar, поэтому наименьшее значение, которое вы можете получить, равно 1/1/1753. В 2008 году SQLServer добавил тип данных datetime2, который поддерживает один год (не было года 0). Похоже, вы пытаетесь вставить значение datetime, которое до 1/1/1753 в столбец SQLServer datetime (not datetime2)
От technet:
Определяет дату, которая сочетается с временем суток, которое основано на 24-часовом часе. datetime2 можно рассматривать как расширение существующего типа datetime, имеющего более высокий диапазон дат, большую дробную точность по умолчанию и дополнительную точность, заданную пользователем.
Мне нужно было проверить, потому что я думал, что datetime2
имеет какое-то отношение с varchar2
. По-видимому, никакого отношения вообще нет.
Поместите свой код, чтобы мы могли догадаться, что вызвало проблему.
Может ли быть, что в вашей таблице базы данных есть столбец "DATETIME" или "SMALLDATETIME", и вы пытаетесь вставить дату вне диапазона? DATETIME охватывает 1753-1-1 по 9999-12-31, а SMALLDATETIME охватывает только от 1900-1-1 до 2079-6-6.
Новый тип данных SQL Server 2008 DATETIME2 будет охватывать 0001-1-1 - 9999-12-31.
Марк
Я получил эту ошибку, когда мой столбец базы данных был создан как NOT NULL, и я специально указал Nullable = true на мое свойство DateTime в моей инфраструктуре ADO.Entity EntityType.
Чтобы исправить это, я делаю свойство Nullable = (None)