.NET DateTime к преобразованию SqlDateTime

При преобразовании.NET DateTime (когда по умолчанию (Дата и время)) к SqlDateTime должен я всегда проверять, ли дата.NET между SqlDateTime. MinValue и SqlDateTime. MaxValue [или] Является там хорошим способом сделать это.

50
задан John Saunders 3 February 2010 в 04:23
поделиться

3 ответа

Возможно ли, что дата действительно может быть вне этого диапазона? Это происходит из-за ввода данных пользователем? Если ответ на любой из этих вопросов утвердительный, вы всегда должны проверять, иначе ваше приложение будет подвержено ошибкам.

Вы можете довольно легко отформатировать дату для включения в оператор SQL:

var sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");
93
ответ дан 7 November 2019 в 10:53
поделиться

Если вы проверяете DBNULL, преобразование SQL Datetime в .NET DateTime не должно быть проблемой. Однако, вы можете столкнуться с проблемами преобразования .NET DateTime в действительный SQL DateTime.

SQL-сервер не распознает даты до 1/1/1753. Именно в этом году в Англии был принят григорианский календарь. Обычно достаточно проверить DateTime.MinValue, но если вы подозреваете, что данные могут иметь годы до 18 века, вам нужно сделать еще одну проверку или использовать другой тип данных. (Я часто задаюсь вопросом, что музеи используют в своих базах данных)

Проверка на максимальную дату на самом деле не нужна, SQL Server и .NET DateTime имеют максимальную дату 12/31/9999 Это может быть действительным бизнес-правилом, но это не вызовет проблем.

2
ответ дан 7 November 2019 в 10:53
поделиться

Также помните, что разрешения [квант времени] разные.

http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime.aspx

Один SQL - 3,33 мс, а .net - 100 нс.

1
ответ дан 7 November 2019 в 10:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: