57 votes

Définir une variable DateTime vide

Je déclarerais une variable String vide comme ceci :

     string myString = string.Empty;

Existe-t-il un équivalent pour une variable 'DateTime' ?

Mettre à jour :

Le problème est que j'utilise cette 'DateTime' comme paramètre pour une 'StoredProcedure' dans SQL. Par exemple:

     DateTime? someDate = null;
    myCommand.Parameters.AddWithValue("@SurgeryDate", someDate);

Lorsque j'exécute ce code, une exception est interceptée et m'indique que la 'StoredProcedure' attendait un paramètre '@SurgeryDate'. Mais je l'ai fourni. Une idée pourquoi ?

90voto

BrokenGlass Points 91618

Étant donné que DateTime est un type de valeur, vous ne pouvez pas lui attribuer null , mais exactement pour ces cas (absence de valeur) Nullable<T> été introduit - utilisez un DateTime place :

 DateTime? myTime = null;

14voto

Brian Warfield Points 347

Vous pouvez définir une variable DateTime sur « 1/1/0001 00:00:00 », mais la variable elle-même ne peut pas être nulle. Pour obtenir ce MinTime, utilisez :

 DateTime variableName = DateTime.MinValue;

6voto

Servy Points 93720

Vous pouvez utiliser une datetime nullable. Datetime? someDate = null;

Vous pouvez trouver des cas de personnes utilisant DateTime.Max ou DateTime.Min dans de tels cas, mais je doute fortement que vous souhaitiez le faire. Cela conduit à des bogues avec des cas extrêmes, du code plus difficile à lire, etc.

5voto

Alex Points 19487

La méthode que vous avez utilisée ( AddWithValue ) ne convertit pas les null valeurs NULL de la base de données. Vous devriez plutôt DBNull.Value

 myCommand.Parameters.AddWithValue(
    "@SurgeryDate", 
    someDate == null ? DBNull.Value : (object)someDate
);

Cela transmettra la valeur someDate si ce n'est pas null , ou DBNull.Value sinon. Dans ce cas, la valeur correcte sera transmise à la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X