J'utilise ibatis et C #. Je reçois un résultat d'une requête de sélection qui a CreatedDate comme l'un des champs. Le type de données de CreatedDate dans Mysql est Date. J'attribue le jeu de résultats de la requête select à un <DeliveryClass> Ilist.
Voici la DeliveryClass CreatedDate comme DateTime. Lorsque je lance l'application, je reçois Impossible de convertir la valeur date/heure de MySQL en System.DateTime . Quel pourrait être le problème?
Le problème dans le format, en fait, mysql a un format différent (aaaa-mm-jj) pour le type de données date/heure et pour résoudre ce problème, utilisez la bibliothèque de connecteurs mysql pour .net à partir d'ici http: //dev.mysql.com/downloads/connector/net/ il donnera un autre type de données pour la date/heure appelée MysqlDateTime
ou vous pouvez formater les données de date/heure dans votre instruction SQL en utilisant DATE_FORMAT (date, format) vous pouvez obtenir plus de détails à partir d’ici http://dev.mysql.com/doc /refman/5.1/en/date-and-time-functions.html#function_date-format
mais je ne le recommande pas, car vous perdrez toute la puissance du type de données date/heure (par exemple, vous ne pouvez pas comparer), car vous allez maintenant le convertir en chaîne, mais je pense que cela sera utile dans les rapports.
MySqlConnection connect = new MySqlConnection("server=localhost; database=luttop; user=root; password=1234; pooling = false; convert zero datetime=True");
L'ajout de convert zero datetime=True
à la chaîne de connexion convertira automatiquement les valeurs de 0000-00-00
Date en DateTime.MinValue()
.
c'est résolu
L'ajout de "convert zero datetime = True" à la chaîne de connexion a résolu mon problème.
<connectionStrings> <add name="MyContext" connectionString="Datasource=localhost;Database=MyAppDb;Uid=root;Pwd=root;CHARSET=utf8;convert zero datetime=True" providerName="MySql.Data.MySqlClient" /> </connectionStrings>
Cordialement PS
J'ai résolu mon problème en définissant la valeur par défaut de la colonne sur null
data plutôt que d'utiliser 0000-00-00 00:00:00
:
update table set date = null
Il pourrait être en dehors de la plage d'un objet DateTime. Je l'ai vu plusieurs fois. Essayez de changer le SQL pour renvoyer la date actuelle au lieu de votre colonne et voir si elle passe bien.
Cela a fonctionné pour moi:
SELECT
IF(tb.Date1 = '0000-00-00 00:00:00', NULL, tb.Date1) AS ValidDate
FROM MyTable AS tb
Une chose qui fonctionne aussi est en train de changer l'action de votre lecteur. J'avais ce problème quand j'ai écrit
string myvar = reader.GetString(0);
Ensuite, j'avais l'habitude d'écrire ceci
object myvar = reader.GetValue(0);
Et pas plus d'erreur.