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!