Что такое datetime2? - PullRequest
       20

Что такое datetime2?

27 голосов
/ 17 марта 2009

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

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

Ответы [ 5 ]

20 голосов
/ 17 марта 2009

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

17 голосов
/ 17 марта 2009

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

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

2 голосов
/ 17 марта 2009

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

Марк

2 голосов
/ 17 марта 2009

От technet :

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

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

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

0 голосов
/ 05 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...