Враховуючи характер типу даних про дату / час, він не може містити 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 # :)