La conversion d'un type de données datetime2 vers un type de données datetime produit une valeur hors limites

La conversion d’un type de données datetime2 vers un type de données datetime produit une valeur hors limites


Source : Stack Overflow [sql-server]

Réponse courte

Cela peut se produire si vous n’initialisez pas une valeur dans un champ DateTime ; le champ n’accepte pas les valeurs NULL, et comme c’est un type valeur, la valeur par défaut du type DateTime non nullable sera utilisée.

Définir la valeur a résolu le problème pour moi !

Réponse détaillée

La valeur de default(DateTime) est DateTime.MinValue (ou new DateTime(1, 1, 1) ou 01/01/0001), qui n’est pas une valeur SQL datetime valide.

La valeur valide la plus basse pour le datetime de SQL Server est 01/01/1753 en raison de son utilisation du calendrier grégorien. Le DateTime2 de SQL Server prend cependant en charge les dates à partir du 01/01/0001. Entity Framework utilise par défaut DateTime2 pour représenter les dates, donc le SQL généré effectue implicitement une conversion de la valeur DateTime2 générée vers une valeur DateTime côté SQL Server.