Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens une erreur hors plage lors de la conversion de DateTime2 en DateTime dans SQL Server ?
SQL Server : résolution des erreurs hors plage lors de la conversion de DateTime2 en DateTime
La conversion de DateTime2
en DateTime
dans SQL Server peut déclencher une erreur hors plage. Il ne s’agit pas d’une simple incompatibilité de types de données ; le problème vient de la façon dont les valeurs sont gérées dans le champ DateTime
.
La question centrale :
Le type DateTime
de SQL Server n'autorise pas les valeurs NULL
. Un champ DateTime
non initialisé est par défaut DateTime.MinValue
(01/01/0001).
Correction rapide :
Attribuez une valeur DateTime
valide au champ avant l'insertion dans la base de données.
Explication détaillée :
SQL Server DateTime
a une date maximale du 01/01/9999, alors que DateTime2
prend en charge une plage plus large, à partir du 01/01/0001. Entity Framework est par défaut DateTime2
, convertissant implicitement DateTime2
en DateTime
lors de l'interaction avec la base de données. Cette conversion échoue si la valeur DateTime2
se situe en dehors de la plage DateTime
.
Résolution :
Remplissez le champ DateTime
avec une valeur valide avant de sauvegarder :
<code class="language-csharp">myDataTable.Rows[0]["myDate"] = DateTime.Now; // Use the current date</code>
Bonnes pratiques :
DateTime
de votre table de base de données nullable pour accueillir les valeurs NULL
.NULL
n'est pas autorisé, utilisez DateTime.MinValue
ou DateTime.MaxValue
par défaut pour éviter les exceptions hors plage.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!