Comment quelqu'un peut-il gérer défaut datetime
J'ai DAL où je convertir une base de données valeur null à leur équivalent de la représentation en C#. Par exemple:
NULL for Numeric = 0
NULL for String = String.Empty
NULL for DateTime = "1/1/0001" (i.e. DateTime.MinValue)
Le problème, pour la date, se trouve dans la couche de présentation, en particulier dans GridViews. Vous ne pouvez pas afficher 1/1/01
pour les utilisateurs.
Ce que j'ai utilisé à faire est de vérifier if myDate.Year=1 or myDate.Year < AcceptedDate
et d'afficher une chaîne vide, mais semble être un effort supplémentaire contrairement à d'autres types de
Veuillez suis ouvert à une meilleure approche. Merci.
Tu ne peux pas régler le format de la Colonne de Date de sorte qu'au lieu de montrer 1/1/01 (qui est supposé être à 2001), il va montrer la valeur réelle qui est 1/1/0001. Que ou cela est possible de convertir la date en une chaîne de caractères lorsqu'il est saisi, afin de ne pas essayer de changer la date.
OriginalL'auteur codingbiz | 2012-06-07
Vous devez vous connecter pour publier un commentaire.
Utilisation
Nullable
type de données à enregistrer la valeur null.Comment faire pour vérifier si la variable a la valeur ou la valeur null
De la chaîne de valeur peut stocker null, alors il n'est pas diffrent type de données chaîne de caractères pour stocker la valeur null.
ou
value.HasValue
, quelle que soit la flotte votre bateau 🙂En outre, vous pouvez répéter ce motif tout au long de votre traitement de différents types de valeurs, c'est à dire la valeur NULL pour SQLInt pourrait être
int? default = null;
. Comme une note côté, les chaînes sont en fait des types de référence, et peuvent être affectées à la valeurnull
.Je suis d'accord. Les types nullables sont mieux pour cela. Pourquoi n'ai-je pas compte de cette approche est que ces champs sont obligatoires dans ma DB. Mais ce qui les rend d'accepter les valeurs null dans ma Logique d'Entreprise signifie que je dois vérifier la valeur avant de passer à la DB
si vous ne cochez pas la valeur null la valeur null sera mis à jour dans la base de données. Ce que vous voulez faire si ces champs a la valeur null.
OriginalL'auteur Romil Kumar Jain
Vous pouvez également utiliser DateTime.MinValue constante.
http://msdn.microsoft.com/en-us/library/system.datetime.minvalue.aspx
Vos conditions:
+1.. Ou utiliser
default(DateTime)
OriginalL'auteur Ihor Deyneka
Vous pouvez utiliser
Nullable
DateTime
, de sorte que vous sera de retourDateTime?
au lieu deDateTime
de votre DAL. De cette façon, vous pouvez vérifier si la valeur retournée est null.OriginalL'auteur Zbigniew
Que les autres à mentionner, vous pouvez utiliser un
System::Nullable<DateTime>
.L'autre approche, je l'ai vu, c'est d'utiliser une norme
DateTime
et il suffit d'utiliser une valeur particulière commeDateTime.MinValue
. Ceci est utile si vous avez besoin de l'honneur d'une interface existante de types et ne peut pas changer leDateTime
à unNullable<DateTime>
.oui, mais c'est un champ défini. il est trivial de la grille pour vérifier l'égalité entre DateTime.MinValue et quel que soit le DAL est de redonner
OriginalL'auteur jglouie
Vous pouvez soit utiliser un Nullable DateTime comme les autres, ou utilisez cette astuce:
(Pour en prévenir le non valide par défaut.)
Cette astuce est utile si vous devez utiliser un non nullable DateTime et veulent fournir une valeur par défaut si aucune n'existe. (E. g. vous avez un non nullable colonne DateTime dans une DB et que vous voulez définir la valeur uniquement si la ligne est nouvelle).
new DateTime()
est le même queDateTime.MinValue
.Intéressant, car il semble être une date non valide pour certains systèmes. (À partir de MSDN: "La valeur de cette constante est équivalente à 00:00:00.0000000, le 1er janvier 0001." --> doit être hors de portée pour certains systèmes.)
SqlServer n'acceptera pas cette date (de rejeter les dates avant 1753 IIRC)
Autant que je me souvienne?
Si vous ne pouvez pas utiliser SqlServer construit dans les types de bases de données pour l'information historique 🙂
OriginalL'auteur Danny Varod
Je ne pense pas que vous avez beaucoup de choix, mais de faire le chèque que vous avez été et affichage en conséquence. Un type nullable pourrait rendre les choses plus facile pour vous. En fonction de vos données, de même que le numérique doit être traité de cette façon. DBNull != 0.
OriginalL'auteur Nigel Whatling