Учитывая природу типа данных даты / времени, он не может содержать nullзначение, то есть он должен содержать значение, он не может быть пустым или ничего не содержать. Если вы помечаете переменную даты / времени как nullableтолько тогда, вы можете присвоить ей нулевое значение. Итак, что вы хотите сделать, это одна из двух вещей (может быть больше, но я могу думать только о двух):
Назначьте минимальное значение даты / времени для вашей переменной, если у вас нет значения для нее. Вы также можете назначить максимальное значение даты / времени - в зависимости от того, что вам подходит. Просто убедитесь, что вы едины для всего сайта при проверке значений даты / времени. Определитесь с использованием minили maxи придерживайтесь его.
Пометьте свою переменную даты / времени как nullable. Таким образом, вы можете установить переменную даты / времени, nullесли у вас нет этой переменной.
Позвольте мне продемонстрировать мой первый пункт на примере. Тип DateTimeпеременной не может быть установлен в нуль, ему нужно значение, в этом случае я собираюсь установить его на DateTimeминимальное значение, если значение отсутствует.
Мой сценарий таков, что у меня есть BlogPostкласс. У него много разных полей / свойств, но я выбрал только два для этого примера. DatePublishedкогда сообщение было опубликовано на веб-сайте и должно содержать значение даты / времени. DateModifiedэто когда сообщение модифицируется, поэтому оно не должно содержать значение, но может содержать значение.
public class BlogPost : Entity
{
public DateTime DateModified { get; set; }
public DateTime DatePublished { get; set; }
}
Использование ADO.NETдля получения данных из базы данных (назначить DateTime.MinValue, если значение отсутствует):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? DateTime.MinValue : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Вы можете выполнить мой второй пункт, пометив DateModifiedполе как nullable. Теперь вы можете установить его, nullесли для него нет значения:
public DateTime? DateModified { get; set; }
Использование ADO.NETдля получения данных из базы данных, это будет выглядеть немного иначе, чем это было сделано выше (назначение nullвместо DateTime.MinValue):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? (DateTime?)null : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Я надеюсь, что это поможет прояснить ситуацию. Учитывая, что мой ответ через 8 лет, вы, вероятно, уже являетесь опытным программистом C # :)