System.Data.SqlTypes.Исключение SqlTypeException: переполнение SqlDateTime

#c# #.net #sql #datetime

#c# #.net #sql #дата-время

Вопрос:

Я пишу приложение в c#.net это работает с базой данных sql. У меня есть 5 полей — DateTime. Когда я нахожусь в режиме отладки, я вижу, что поля DateTime верны, но когда я запускаю приложение, я получаю следующее исключение — {System.Data.SqlTypes.Исключение SqlTypeException: переполнение SqlDateTime. Должно быть между 1/1/1753 12:00:00 утра и 31/12/9999 11:59:59 вечера.}

код —

          try
            {
                DateTime date = DateTime.MinValue;
                date = AllEventsSortedList[0].dateTime;
                foreach (Event m485 in _485List)
                {
                    CycleTbl nCycle = new CycleTbl();
                    nCycle._485_DateTime = m485.dateTime;
                    nCycle.OrderNumber = m485.OrderNumber;
                    nCycle.Source = m485.Source;
                    nCycle.Dest = m485.Destination;
                    foreach (Event m412 in _412List)
                    {
                        if ((m485.dateTime.Year == m412.dateTime.Year) amp;amp; (m485.dateTime.Month == m412.dateTime.Month) amp;amp; (m485.dateTime.Day == m412.dateTime.Day))
                            nCycle._412_DateTime = (DateTime)m412.dateTime;
                    }
                    foreach (Event m500 in _500List)
                    {
                        if ((m485.dateTime.Year == m500.dateTime.Year) amp;amp; (m485.dateTime.Month == m500.dateTime.Month) amp;amp; (m485.dateTime.Day == m500.dateTime.Day))
                            nCycle._500_DateTime = (DateTime)m500.dateTime;
                    }
                    foreach (Event m502 in _502list)
                    {
                        if ((m485.dateTime.Year == m502.dateTime.Year) amp;amp; (m485.dateTime.Month == m502.dateTime.Month) amp;amp; (m485.dateTime.Day == m502.dateTime.Day))
                        {
                            nCycle._502_DateTime = m502.dateTime;
                            nCycle.LGVNumber = (int)m502.LGVNumber;
                        }
                    }

                    nCycle._502_DateTime = (DateTime)date;
                    LgvDB.CycleTbls.InsertOnSubmit(nCycle);
                    LgvDB.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error in building the table."   Environment.NewLine   ex.Message);
            }
  

Кто-нибудь может сказать мне, в чем может быть проблема?
Спасибо.

Комментарии:

1. Моя проблема была решена, когда я ввел значение, которого не существует в списке DateTime.Now.

Ответ №1:

Диапазон дат-времени в .NET:

Тип значения DateTime представляет даты и время со значениями в диапазоне от 12:00:00 полуночи 1 января 0001 года нашей эры до 11:59:59 вечера 31 декабря 9999 года н.э. (Н.э.).

Диапазон дат-времени SQL Server:

С 1 января 1753 года по 31 декабря 9999 года

В SQL Server 2008 введен тип данных datetime2, который имеет больший диапазон в соответствии с .NET DateTime.