Je viens de trouver que mon sqldatetime.minvalue est différent sur différentes machines.
Parfois c'est = DateTime (1953, 1, 1, 0, 0, 0); P>
mais sur d'autres machines C'est = DateTime (1753, 1, 1, 0, 0, 0); P>
Comment cela peut-il être? WinXP SP2. P>
Mon code était comme ceci: p> DateTime date;
...
if (date == SqlDateTime.MinValue)
{
return "(any)";
}
else
{
return date.ToString();
}
4 Réponses :
Êtes-vous sûr que vous êtes correct sur les différentes valeurs? La date minimale valide pour une structure SQLDATETIME est le 1er janvier 1753. P>
blockQuote>
Si c'est véritablement reproductible, il semble que ce soit un bug dans le cadre .NET (ou la documentation) afin que Microsoft soit les gens à demander de l'aide. Les appels de support sont libres si le problème se trouve être un bogue. P> SQLATETime code> est documenté Comme ayant une date de début fixe chez MSDN pour toutes les versions du .NET Framework: P>
Je sais que ce problème s'est produit sur les anciennes machines Windows NT, où la plage de dates était de 1953-XXXX, au lieu de 1753-9999. Êtes-vous totalement sûr que ces machines fonctionnent à la fois Windows XP? P>
Comme d'autres personnes ont dit, sqlateTetime code> statique em> constructeur définit l'année. Donc, à moins que vous appeliez un autre constructeur, il n'y a pas d'explication évidente.
static SqlDateTime()
{
...
MinYear = 1753;
...
}
sur une légère tangente, mais comme vous utilisez sqldateTime.minvalue comme une valeur spéciale, je vous suggère d'utiliser un NULLLABLE DateTime plutôt que celui-ci: Remarque Le raccourci pour un type nullable utilise le point d'interrogation: par exemple DateTime? P> Comme je l'ai dit dans mon commentaire, je me demande s'il y a une ficelle à la chaîne qui fait apparaître que SqldateTime.Minvalue renvoie une valeur de différence, quand c'est en fait la mise en forme de la chaîne qui est en fait le problème (par exemple, des paramètres régionaux). P> p>
Comment utilisez-vous la valeur? I.E. Y a-t-il un type de coulée de type (par exemple à une chaîne de chaîne) - si oui, pourrait-il être à la hauteur des paramètres régionaux affectant le casting?
Dupe: Stackoverflow.com/questions/805770/ ...
Ceci est pas b> un duplicata. Cette question concerne pourquoi sqldateTime.minvalue! = DateTime.minvalue, une question différente
Oui, la différence entre les deux est évidente lorsque vous essayez de mettre DateTime.Minvalue dans SQL Server, car elle n'affuge pas les dates avant 1753, ce qui était la date à laquelle le calendrier grégorien a été adopté par la Grande-Bretagne.
@Chris S - Sauf si vous utilisez le nouveau type de données DateTime2, qui prend en charge la même plage que la structure DateTime.