При преобразовании.NET DateTime (когда по умолчанию (Дата и время)) к SqlDateTime должен я всегда проверять, ли дата.NET между SqlDateTime. MinValue и SqlDateTime. MaxValue [или] Является там хорошим способом сделать это.
Возможно ли, что дата действительно может быть вне этого диапазона? Это происходит из-за ввода данных пользователем? Если ответ на любой из этих вопросов утвердительный, вы всегда должны проверять, иначе ваше приложение будет подвержено ошибкам.
Вы можете довольно легко отформатировать дату для включения в оператор SQL:
var sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");
Если вы проверяете DBNULL, преобразование SQL Datetime в .NET DateTime не должно быть проблемой. Однако, вы можете столкнуться с проблемами преобразования .NET DateTime в действительный SQL DateTime.
SQL-сервер не распознает даты до 1/1/1753. Именно в этом году в Англии был принят григорианский календарь. Обычно достаточно проверить DateTime.MinValue, но если вы подозреваете, что данные могут иметь годы до 18 века, вам нужно сделать еще одну проверку или использовать другой тип данных. (Я часто задаюсь вопросом, что музеи используют в своих базах данных)
Проверка на максимальную дату на самом деле не нужна, SQL Server и .NET DateTime имеют максимальную дату 12/31/9999 Это может быть действительным бизнес-правилом, но это не вызовет проблем.
Также помните, что разрешения [квант времени] разные.
http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime.aspx
Один SQL - 3,33 мс, а .net - 100 нс.