Переполнение поля даты и времени в SQL Server 2008 - PullRequest
2 голосов
/ 27 июля 2010

Я использую C # для взаимодействия с базой данных SQL.база данных имеет поле DateTime.Когда я пытаюсь написать объект DateTime из C #, я получаю следующую ошибку:

ОШИБКА [22008] [Microsoft] [Драйвер ODBC SQL Server] Переполнение поля Datetime

Я нашел это по теме:

http://social.msdn.microsoft.com/forums/en-US/sqldataaccess/thread/ac1b5a6d-5e64-4603-9c92-b75ba4e51bf2/

Могу ли я сделать какие-либо манипуляции с моим объектом DateTime на стороне C #?

РЕДАКТИРОВАТЬ Я пытаюсь добавить DateTime.MinValue

Ответы [ 4 ]

5 голосов
/ 27 июля 2010

Звучит так, будто вы просто проходите плохое свидание.Например, DateTime.MinValue находится вне допустимого диапазона значений времени и даты SQL Server примерно на 1600 лет.

Кстати, вам не следует использовать ODBC для связи C # с SQL Server.Использование System.Data.SqlClient даст вам гораздо лучшую производительность.

4 голосов
/ 27 июля 2010

Объект .NET DateTime имеет больший диапазон, чем поле даты / времени в SQL.

На вашем уровне доступа к данным, каждый раз, когда вы записываете дату в базу данных, убедитесь, что она находится на уровне SqlDateTime.MinValue и SqlDateTime.MaxValue.

2 голосов
/ 27 июля 2010

Я уверен, что ваш .NET DateTime не инициализирован, что означает «0000-01-01», и это недопустимое значение для SQL Server DATETIME, а часто не желательнозначение; -)

0 голосов
/ 05 апреля 2019

Измените все ваши столбцы даты и времени на тип datetime2. Сгенерируйте сценарии sql, используя запрос ниже.

select distinct concat('alter table ', table_name, ' alter column ',  column_name, ' datetime2 ', 
case when(is_nullable = 'NO') then ' NOT ' else '' end, ' NULL;') 
from information_schema.columns where data_type = 'datetime';
...