web-dev-qa-db-fra.com

Impossible de convertir la valeur date/heure de MySQL en System.DateTime

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?

11
Gopi

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. 

7
Amgad Fahmi
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

71
levefdsa

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

8
psantos

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
5
user693858

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.

2
Dan

Cela a fonctionné pour moi:

SELECT 
    IF(tb.Date1 = '0000-00-00 00:00:00', NULL, tb.Date1) AS ValidDate
FROM MyTable AS tb
0
Leacam

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.

0
Romain BARTOLO