Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

System.Data.SqlTypes.SqlTypeException :débordement SqlDateTime

Matt est probablement sur la bonne voie. Vous avez défini une valeur par défaut pour votre colonne - cependant, cela ne prendra effet que si vous insérez réellement quelque chose dans votre table dans la base de données.

Lorsque vous effectuez un test unitaire, comme vous le dites, vous initialisez très probablement la variable DateTime à quelque chose (ou non - alors ce sera DateTime.MinValue, qui est 01/01/0001) et ensuite vous l'envoyez au SQL Server et cette valeur est en dehors de la plage valide pour un DATETIME sur SQL Server (comme l'indique clairement l'erreur).

Donc, ce que vous devez faire est d'ajouter une ligne à votre test unitaire .NET pour initialiser la variable DateTime sur "DateTime.Today":

DateTime myDateTime = DateTime.Today

puis insérez-le dans SQL Server.

OU:vous pouvez modifier votre instruction SQL INSERT afin qu'elle n'insère pas de valeur pour cette colonne - il semble que maintenant, elle le fasse (et tente d'insérer cette - pour SQL Server - date non valide dans la table). Si vous ne spécifiez pas cette colonne dans votre INSERT, la colonne par défaut de getdate() démarrera et insèrera la date d'aujourd'hui dans la colonne.

Marc