Je n'arrive pas à convertir un sqldatatime.minvalue en un objet datetime.
J'ai essayé:
Datetime dt = Convert.ToDateTime(SqlDateTime.MinValue);
Cela n'a évidemment pas fonctionné.
Je n'arrive pas à convertir un sqldatatime.minvalue en un objet datetime.
J'ai essayé:
Datetime dt = Convert.ToDateTime(SqlDateTime.MinValue);
Cela n'a évidemment pas fonctionné.
Une raison de ne pas utiliser uniquement l' opérateur de conversion explicite ?
DateTime dt = (DateTime) SqlDateTime.MinValue;
Ça marche pour moi:
using System;
using System.Data.SqlTypes;
class Test
{
static void Main()
{
DateTime dt = (DateTime) SqlDateTime.MinValue;
Console.WriteLine(dt);
}
}
Les réponses que vous avez reçues vous ai montré deux façons de convertir la valeur. La première consiste à utiliser une conversion explicite définie pour SqlDateTime
de DateTime
, l'autre est l'accès à l' .Value
de la propriété sur l' SqlDateTime
de l'instance, qui renvoie un DateTime
.
var date = theSqlDate.Value; // via property
var date = (DateTime)theSqlDate; // via explicit conversion
Il y a des différences qui méritent d'être considérées. SqlDateTime
prend en charge le concept de valeurs null dans la base de données (DBNull, référencé par un autre désormais supprimé réponse), par la valeur SqlDateTime.Null
. Si vous accédez à l' Value
de la propriété à une valeur "null" exemple, vous allez courir dans une SqlNullValueException
. D'autre part, une conversion explicite de type DateTime résultats en {January 1, 1900 12:00:00 AM}
. Aucune de ces résultats peut être désiré dans votre code. L'écrasement d'un nulle valide l'entrée à la base de données avec une valeur non nulle valeur par défaut peut être tout aussi mauvais que l'obtention d'une exception à l'exécution.
Si vous avez une colonne pouvant être null dans la base de données, et si vous travaillez avec des SqlDateTime
, vous devrez peut-être explicitement tester et traiter l' SqlDateTime.Null
différemment, et alors il pourrait ne pas importe l'approche que vous prenez à la conversion d'autres valeurs.
DateTime? date;
if (theSqlDate.Equals(SqlDateTime.Null))
date = null
else
date = theSqlDate.Value; // or (DateTime)theSqlDate;
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.