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

Wie analysiere ich MySQL-Zeitdaten in Golang?

Mary-Kate Olsen
Freigeben: 2024-11-21 05:29:14
Original
1035 Leute haben es durchsucht

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)
Nach dem Login kopieren

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")
Nach dem Login kopieren

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))
}
Nach dem Login kopieren

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())
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage