J'obtiens cette erreur:
Impossible de convertir la valeur de date / heure MySQL en System.DateTime
pendant que j'essaye de récupérer les données d'une base de données MySQL. J'ai le type de données de date dans ma base de données MySQL. Mais tout en le récupérant dans ma table de données, il obtient l'erreur ci-dessus.
Comment puis-je réparer cela?
.net
asp.net
mysql
asp.net-3.5
Ankit Chauhan
la source
la source
Réponses:
Si je cherche sur Google "Impossible de convertir la valeur de date / heure MySQL en System.DateTime", je vois de nombreuses références à un problème d'accès à MySQL à partir de Visual Studio. Est-ce votre contexte?
Une solution suggérée est:
Référence: http://bugs.mysql.com/bug.php?id=26054
la source
Vous devez ajouter
Convert Zero Datetime=True
à votre chaîne de connexion, par exemple:la source
i ajouté les deux
Convert Zero Datetime=True
etAllow Zero Datetime=True
il fonctionne très bienla source
Tirez la valeur de date / heure vers le bas sous forme de chaîne et effectuez une opération.
DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
Vous devez simplement définir le format de date pour la date à laquelle vous renvoyez de la base de données. Très probablementyyyy-MM-dd HH:mm:ss
. Au moins c'est pour moi.Vérifiez ici plus d'informations sur le
DateTime.ParseExact
la source
Laissez MySql convertir votre horodatage unix en chaîne. Utilisez la fonction mysql FROM_UNIXTIME (113283901)
la source
J'ai également rencontré le même problème, et j'ai obtenu le nom des colonnes et ses types. Puis cast (col_Name comme Char) à partir du nom de la table. De cette façon, j'obtiens le problème en tant que «0000-00-00 00:00:00», puis je mets à jour comme date et heure valides, l'erreur disparaît pour mon cas.
la source
Vous pouvez rendre l'application entièrement compatible avec la date et l'heure utilisées par MySql. Lorsque l'application s'exécute au moment de l'exécution, fournissez ce code. Accédez d'abord aux événements de l'application. Dans la liste des outils
Cela ouvrira un nouveau fichier. Ce fichier contient du code utilisé au démarrage de l'application.
Écrivez ce code dans ce nouveau fichier:
Partial Friend Class MyApplication Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup My.Application.ChangeCulture("en") My.Application.ChangeUICulture("en") My.Application.Culture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd" My.Application.Culture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd" My.Application.Culture.DateTimeFormat.LongTimePattern = "HH:mm:ss" My.Application.Culture.DateTimeFormat.ShortTimePattern = "HH:mm:ss" End Sub End Class
la source
Plutôt que de modifier la chaîne de connexion, vous pouvez utiliser la
IsValidDateTime
propriété de l'MySqlDateTime
objet pour vous aider à déterminer si vous pouvez convertir l'objet enDateTime
.J'ai eu un scénario dans lequel j'essayais de charger des données à partir d'une colonne "UpdateTime" qui n'était explicitement définie que lorsqu'il y avait une mise à jour de la ligne (par opposition à InsertedTime qui était toujours défini). Pour ce cas, j'ai utilisé la
MySqlDataReader.GetMySqlDateTime
méthode comme ceci:la source
si "allow zero datetime = true" ne fonctionne pas, utilisez les sollutions suivantes: -
Ajoutez ceci à votre chaîne de connexion: "allow zero datetime = no" - qui a fait fonctionner parfaitement le type cast.
la source
Dans un rapport Stimulsoft, ajoutez ce paramètre à la chaîne de connexion (clic droit sur la source de données-> modifier)
la source