Étant donné la nature d'un type de données date / heure, il ne peut pas contenir de null
valeur, c'est-à-dire qu'il doit contenir une valeur, il ne peut pas être vide ou ne rien contenir. Si vous marquez une variable date / heure comme nullable
alors, vous pouvez lui attribuer une valeur nulle. Donc, ce que vous cherchez à faire est l'une des deux choses (il y en a peut-être plus mais je ne pense qu'à deux):
Attribuez une valeur de date / heure minimale à votre variable si vous n'en avez pas de valeur. Vous pouvez également attribuer une valeur de date / heure maximale, selon la manière qui vous convient. Assurez-vous simplement que vous êtes cohérent à l'échelle du site lorsque vous vérifiez vos valeurs de date / heure. Décidez d'utiliser min
ou max
et respectez-le.
Marquez votre variable date / heure comme nullable
. De cette façon, vous pouvez définir votre variable date / heure null
si vous ne disposez pas d'une variable.
Permettez-moi de démontrer mon premier point en utilisant un exemple. Le DateTime
type de variable ne peut pas être défini sur null, il a besoin d'une valeur, dans ce cas, je vais le définir à la DateTime
valeur minimale de s'il n'y a pas de valeur.
Mon scénario est que j'ai une BlogPost
classe. Il a de nombreux champs / propriétés différents mais j'ai choisi de n'en utiliser que deux pour cet exemple. DatePublished
correspond au moment où la publication a été publiée sur le site Web et doit contenir une valeur date / heure. DateModified
c'est quand un article est modifié, il ne doit donc pas contenir de valeur, mais peut contenir une valeur.
public class BlogPost : Entity
{
public DateTime DateModified { get; set; }
public DateTime DatePublished { get; set; }
}
Utilisation ADO.NET
pour obtenir les données de la base de données (attribuer DateTime.MinValue
s'il n'y a pas de valeur):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? DateTime.MinValue : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Vous pouvez accomplir mon deuxième point en marquant le DateModified
champ comme nullable
. Vous pouvez maintenant le définir null
s'il n'y a pas de valeur:
public DateTime? DateModified { get; set; }
En utilisant ADO.NET
pour obtenir les données de la base de données, cela ressemblera un peu à la façon dont cela a été fait ci-dessus (en assignant null
au lieu de DateTime.MinValue
):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? (DateTime?)null : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
J'espère que cela aide à dissiper toute confusion. Étant donné que ma réponse est d'environ 8 ans plus tard, vous êtes probablement un programmeur C # expert maintenant :)