Heim >Backend-Entwicklung >Golang >Wie behebt man den Fehler „nicht unterstützter Treiber -> Scan-Paar: []uint8 -> *time.Time' beim Parsen der Zeit von MySQL in Go?

Wie behebt man den Fehler „nicht unterstützter Treiber -> Scan-Paar: []uint8 -> *time.Time' beim Parsen der Zeit von MySQL in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-11-10 14:52:02441Durchsuche

How to Solve Scan-Paar: []uint8 -> *time.Time“ Fehler beim Parsen der Zeit von MySQL in Go? " /> Scan-Paar: []uint8 -> *time.Time" Fehler beim Parsen der Zeit von MySQL in Go? " />

So handhaben Sie die Zeitanalyse aus der Datenbank in Go

Fehler beim Abrufen von Zeitwerten aus einer MySQL-Datenbank können frustrierend sein. In diesem Artikel wird der spezifische Fehler „nicht unterstützter Treiber –>“ behandelt. Scan-Paar: []uint8 -> *time.Time“ und bietet Lösungen unter Verwendung der beliebten go-sql-driver/mysql-Bibliothek.

Lösung: Automatisches Parsen aktivieren

Der go-sql-driver/mysql bietet Unterstützung für das automatische Parsen von DATE- und DATETIME-Spalten in time.Time-Werte, um diese Funktion zu aktivieren, hängen Sie den Parameter „parseTime=true“ an Ihre Verbindungszeichenfolge an. Nach der Aktivierung werden Abfragen wie SELECT current_timestamp() automatisch dem gewünschten Zeitformat zugeordnet.

Benutzerdefiniertes Parsen für bestimmte Fälle

In Fällen, in denen automatisches Parsen nicht geeignet oder nicht verfügbar ist (z. B. Abrufen von current_time()), ist benutzerdefiniertes Parsen erforderlich.

Schritt 1: Erstellen Sie einen benutzerdefinierten Typ

Definieren Sie einen benutzerdefinierten Typ, der Rohbyte-Slices ([]Byte) umschließt und eine Time()-Methode implementiert, um Zeitwerte in time.Time zu analysieren:

type rawTime []byte

func (t rawTime) Time() (time.Time, error) {
    return time.Parse("15:04:05", string(t))
}

Schritt 2: Benutzerdefinierten Typ beim Scannen verwenden

Ersetzen Sie in Ihrem Scancode den direkten Verweis auf time.Time durch Ihren benutzerdefinierten Typ:

var myTime rawTime
rows, err = db.Query("SELECT current_time()")
if err = rows.Scan(&myTime); err != nil {
    // Handle error
}

Schritt 3: Rohzeit in analysierte Zeit konvertieren

Rufen Sie abschließend Time() für Ihren benutzerdefinierten Typ auf, um den analysierten Zeitwert abzurufen:

fmt.Println(myTime.Time())

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „nicht unterstützter Treiber -> Scan-Paar: []uint8 -> *time.Time' beim Parsen der Zeit von MySQL in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn