Подтвердить что ты не робот

Что такое datetime2?

Я получил это в статусе INSERT для MSSQL 2008

System.Data.SqlClient.SqlException: Преобразование данных datetime2 тип к типу данных даты и времени в значении вне диапазона.

4b9b3361

Ответ 1

Определяет дату, которая сочетается с временем суток, которое основано на 24-часовом часе. datetime2 можно рассматривать как расширение существующего типа datetime, имеющего более высокий диапазон дат, большую дробную точность по умолчанию и дополнительную точность, заданную пользователем.

http://technet.microsoft.com/en-us/library/bb677335.aspx

Ответ 2

Тип данных datetime SQLServer - это гораздо меньший диапазон допустимых значений, чем тип данных .net datetime. Тип datetime SQLServer в основном поддерживает gregorian calendar, поэтому наименьшее значение, которое вы можете получить, равно 1/1/1753. В 2008 году SQLServer добавил тип данных datetime2, который поддерживает один год (не было года 0). Похоже, вы пытаетесь вставить значение datetime, которое до 1/1/1753 в столбец SQLServer datetime (not datetime2)

Ответ 3

От technet:

Определяет дату, которая сочетается с временем суток, которое основано на 24-часовом часе. datetime2 можно рассматривать как расширение существующего типа datetime, имеющего более высокий диапазон дат, большую дробную точность по умолчанию и дополнительную точность, заданную пользователем.

Мне нужно было проверить, потому что я думал, что datetime2 имеет какое-то отношение с varchar2. По-видимому, никакого отношения вообще нет.

Поместите свой код, чтобы мы могли догадаться, что вызвало проблему.

Ответ 4

Может ли быть, что в вашей таблице базы данных есть столбец "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.

Марк

Ответ 5

Я получил эту ошибку, когда мой столбец базы данных был создан как NOT NULL, и я специально указал Nullable = true на мое свойство DateTime в моей инфраструктуре ADO.Entity EntityType.

Чтобы исправить это, я делаю свойство Nullable = (None)