2009-11-06 2 views
3

c'est juste bizarre et ça me donne mal à la tête. J'ai regardé mon code et je ne vois aucune erreur logique le provoquant. Toute autre date définie dans ma variable birthTate DateTime dans ma classe fonctionne lorsque je l'ajoute en tant que valeur dans mon conn.AddParam, mais quand j'envoie 1/1/0001 12:00:00 AM (qui a été envoyé en mettant à MinValue) à SQL champ date de 2008, il reste la valeur par défaut que je mets à zéro dans le databse pour ce champ:1/1/0001 12:00:00 AM pas de mise à jour SQL 2008 Date champ

conn.AddParam("@birthDate", birthDate); 

birthDate est de type DateTime. Il est défini sur DateTime.MinValue; Je ne vois pas pourquoi ça ne prendrait pas ça.

Répondre

4

Je ne comprends peut-être pas la question, mais je crois que le 1er janvier 1753 est la première date prise en charge par SQL Server.

Source

+0

Je vais supposer que vous typoed 1753. – Powerlord

+0

L'affiche a dit qu'il utilisait le type de données de date dans SQL Server 2008 qui prend en charge les dates dès 0001-01-01 (http://technet.microsoft.com/en -us/library/bb630352.aspx) – TLiebe

+0

@R. Bemrose: Fixe. Merci. – theycallmemorty

0

Juste une supposition, mais il pourrait être dû à un problème de coulée. Étant donné que votre variable birthDate a un composant time (12:00 AM), SQL peut le convertir en DateTime avant qu'il ne soit inséré dans le champ Date. Depuis le 1/1/0001 est un SQL DateTime invalide, il pourrait avoir des problèmes. Essayez plutôt de définir votre paramètre @birthDate sur birthDate.Date.

0

Dans SQL Server 2008:

Date Type de données: - vous permettra de stocker uniquement la date (AAAA-MM-JJ) et que la gamme 0001-01-01 par 9999-12-31.Its précise à 1 jour

Temps type de données: Il stocke au format hh: mm: ss: NNNNNNN, avec la gamme 00: 00: 00,0000000 à 23: 59: 59: 9999999 et est précis à 100 nanosecondes

dateTime2: le format est AAAA-MM_DD hh: mm: ss: nnnnnnnm avec une gamme 0001-01-01 00: 00: 00,0000000 par 999-12-31: 59 9999999, la précision est de 100 nanosecondes

DateTimeOffset: Il comprend des informations supplémentaires pour suivre le format zone.The temps est AAAA-MM-JJ hh: mm: ss [.nnnnnnn] [+/-] hh: mm avec une gamme de 00 0001-01-01 : 00: 00.000000 à 9999-12-31 23: 59: 50.9999999.storage 8 yo 10 octets.

0

DateTime est un type de valeur. Par conséquent, si une variable DateTime n'a pas été affectée, sa valeur sera la valeur par défaut qui se trouve être DateTime.MinValue. C'est pourquoi lorsque vous définissez explicitement votre date de naissance à DateTime.MinValue, elle est traitée comme si elle n'était pas affectée du tout (par exemple, comme nulle) et est donc remplacée par la valeur par défaut de ce paramètre dans votre proc stockée.

Questions connexes