Во-первых, DateTime
типы данных могут хранить только минимальную дату «1753-01-01».Для SmallDateTime
минимальная дата - «1900-01-01».Не случайно они выбрали это значение.Сам календарь изменился в 1752 году, и поэтому попытка сравнить количество дней от «1701-01-01» до настоящего времени проблематична с использованием стандартной математики даты.
Однако в SQL Server 2008 появился новый DateTime2
или Date
, любой из которых может хранить значение 0001-01-01
, но было бы ошибкой делать это по причине, которую я только что упомянул.
В-третьих, попытка использовать произвольную дату для представления отсутствия значения даты является ошибкой ИМО.Это то, что я называю «магическим значением», подходом к избеганию нулей.IMO, это значительно усложняет вызывающий код, так как теперь вызывающий код должен знать и проверять магическое значение вместо нуля, чтобы знать, отображать ли пробел.Вместо этого вы должны вернуть значения DateTime (DateTime?
), которые могут иметь значение NULL, из вашего кода LINQ и передать этот ноль до уровня представления, чтобы код представления мог обрабатывать отсутствующие значения. Или