#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:
Тип значения DateTime представляет даты и время со значениями в диапазоне от 12:00:00 полуночи 1 января 0001 года нашей эры до 11:59:59 вечера 31 декабря 9999 года н.э. (Н.э.).
Диапазон дат-времени SQL Server:
С 1 января 1753 года по 31 декабря 9999 года
В SQL Server 2008 введен тип данных datetime2, который имеет больший диапазон в соответствии с .NET DateTime.