Heim >Backend-Entwicklung >Golang >Wie analysiere ich MySQL-Zeitdaten in Golang?

Wie analysiere ich MySQL-Zeitdaten in Golang?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-21 05:29:141034Durchsuche

How to Parse MySQL Time Data in Golang?

MySQL-Zeitanalyse in Golang

In Golang kann das Abrufen von Zeitdaten von MySQL eine Herausforderung darstellen, wie der Fehler „nicht unterstützter Treiber“ zeigt -> Scan-Paar: []uint8 -> *time.Time" bei Verwendung des folgenden Codeausschnitts:

var my_time time.Time
rows, err := db.Query("SELECT current_time FROM table")
err := rows.Scan(&my_time)

Um dieses Problem zu beheben, sollten Sie den go-sql-driver/mysql-Treiber verwenden. Dies bietet die Möglichkeit, die Datentypen DATE und DATETIME automatisch in time.Time zu konvertieren. Dies kann erreicht werden, indem parseTime=true zur Verbindungszeichenfolge hinzugefügt wird, wie unten gezeigt:

db, err := sql.Open("mysql", "root:@/?parseTime=true")

Wenn Sie jedoch speziell „current_time“ (anstelle von „current_timestamp“) benötigen, müssen Sie die Zeitdaten manuell analysieren. Im Folgenden finden Sie zwei Ansätze, um dies zu erreichen:

Benutzerdefinierter Zeitanalysetyp

Erstellen Sie einen benutzerdefinierten Typ, rawTime, der ein []Byte-Slice kapselt und eine Time() bereitstellt. Methode zur Zeitanalyse:

type rawTime []byte

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

Verwenden Sie in Ihrem Scancode rawTime, um die aktuelle_Zeit automatisch zu analysieren:

var myTime rawTime
rows, err := db.Query("SELECT current_time()")
if rows.Next() {
    if err = rows.Scan(&myTime); err != nil {
        panic(err)
    }
}
fmt.Println(myTime.Time())

Manuelle Zeitanalyse

Anstatt sich auf einen benutzerdefinierten Typ zu verlassen, können Sie die Zeitdaten manuell analysieren:

var myTime string
rows, err := db.Query("SELECT current_time()")
if rows.Next() {
    if err = rows.Scan(&myTime); err != nil {
        panic(err)
    }
}
parsedTime, err := time.Parse("15:04:05", myTime)
if err != nil {
    panic(err)
}
fmt.Println(parsedTime)

Das obige ist der detaillierte Inhalt vonWie analysiere ich MySQL-Zeitdaten in Golang?. 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