wake-up-neo.com

Der MySQL-Datums-/Zeitwert kann nicht in System.DateTime konvertiert werden

Ich erhalte diesen Fehler:

Der MySQL-Datums-/Zeitwert kann nicht in System.DateTime konvertiert werden

ich versuche, die Daten aus einer MySQL-Datenbank abzurufen ... Ich habe den Datentyp ' date ' in meiner MySQL-Datenbank. Beim Abrufen in meine Datentabelle wird jedoch der obige Fehler angezeigt.

Wie kann ich das beheben?

71
Ankit Chauhan

Wenn ich nach "Datum und Uhrzeit von MySQL kann nicht in System.DateTime konvertieren" google werden, sehe ich zahlreiche Hinweise auf ein Problem beim Zugriff auf MySQL von Visual Studio. Ist das dein Kontext?

Eine vorgeschlagene Lösung ist:

Dies ist kein Fehler, aber erwartet Verhalten. Bitte überprüfen Sie die Bedienungsanleitung unter Verbinden Sie die Optionen und setzen Sie "Allow Zero Datetime" auf true, wie im angehängten Bilder, und der Fehler wird verschwinden.

Referenz: http://bugs.mysql.com/bug.php?id=26054

42
dkretz

Sie müssen Convert Zero Datetime=True zu Ihrer Verbindungszeichenfolge hinzufügen, zum Beispiel:

server=localhost;User Id=root;password=mautauaja;Persist Security Info=True;database=test;Convert Zero Datetime=True
174
agni

ich habe beides Convert Zero Datetime=True & Allow Zero Datetime=True hinzugefügt und es funktioniert gut

17
Kiddo

Ziehen Sie den datetime-Wert als Zeichenfolge herunter und führen Sie eine DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles); aus. Sie müssen lediglich das Datumsformat für das Datum einstellen, das Sie aus der Datenbank zurückgeben. Am wahrscheinlichsten ist es yyyy-MM-dd HH:mm:ss. Zumindest ist es für mich. 

Überprüfen Sie hier weitere Informationen zum DateTime.ParseExact

3
Tim Meers

Lassen Sie MySql Ihren Unix-Zeitstempel in einen String konvertieren. Verwenden Sie die mysql-Funktion FROM_UNIXTIME (113283901) 

Ich hatte auch das gleiche Problem und bekam den Spaltennamen und seine Typen. Dann gießen Sie (col_Name als Char) aus dem Tabellennamen. Auf diese Weise bekomme ich das Problem als "0000-00-00 00:00:00", dann aktualisiere ich als gültiges Datum und Uhrzeit, zu dem der Fehler für meinen Fall entfernt wird.

1
Singaravelan

Sie können die Anwendung mit dem von MySql verwendeten Datum und der Uhrzeit vollständig kompatibel machen. Wenn die Anwendung zur Laufzeit ausgeführt wird, geben Sie diesen Code ein . Gehen Sie zuerst zu den Anwendungsereignissen ..__

  1. Gehe zum Projekt
  2. Projekteigenschaften
  3. Wählen Sie die Registerkarte Anwendung
  4. Anwendungsereignisse anzeigen

Dadurch wird eine neue Datei geöffnet. Diese Datei enthält Code, der beim Start der Anwendung verwendet wird.

Schreiben Sie diesen Code in diese neue Datei:

 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
1
KHALID

wenn "null datetime = true" nicht zulässig ist, verwenden Sie die folgenden Sollutionen: -

Fügen Sie dies zu Ihrer Verbindungszeichenfolge hinzu: "erlaube null datetime = no" - Damit ist der Typumwandler perfekt. 

0
Manoher Kumar

Anstatt die Verbindungszeichenfolge zu ändern, können Sie die IsValidDateTime-Eigenschaft des MySqlDateTime-Objekts verwenden, um zu bestimmen, ob Sie das Objekt als DateTime umwandeln können.

Ich hatte ein Szenario, in dem ich versuchte, Daten aus einer "UpdateTime" -Spalte zu laden, die nur explizit gesetzt wurde, wenn die Zeile aktualisiert wurde (im Gegensatz zu InsertedTime, das immer gesetzt wurde). Für diesen Fall habe ich die MySqlDataReader.GetMySqlDateTime-Methode wie folgt verwendet:

using (MySqlDataReader reader = await MySqlHelper.ExecuteReaderAsync(...))
{
    if (await reader.ReadAsync())
    {
        DateTime? updateTime = reader.GetMySqlDateTime("UpdateTime").IsValidDateTime ? (DateTime?)reader["UpdateTime"] : null;
    }
}
0
P Walker

Fügen Sie in einem Stimulsoft-Bericht diesen Parameter zur Verbindungszeichenfolge hinzu (Rechtsklick auf Datenquelle-> Bearbeiten).

Convert Zero Datetime=True;
0
Mostafa Asadi