MySQL Time Parsing in Golang
Di Golang, pengambilan data masa daripada MySQL boleh menimbulkan cabaran, seperti yang ditunjukkan oleh ralat "unsupported driver -> Imbas pasangan: []uint8 -> *masa." apabila menggunakan coretan kod di bawah:
var my_time time.Time rows, err := db.Query("SELECT current_time FROM table") err := rows.Scan(&my_time)
Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan pemacu go-sql-driver/mysql, yang menawarkan pilihan untuk menukar jenis data DATE dan DATETIME secara automatik kepada masa. Masa. Ini boleh dicapai dengan menambahkan parseTime=true pada rentetan sambungan, seperti yang ditunjukkan di bawah:
db, err := sql.Open("mysql", "root:@/?parseTime=true")
Walau bagaimanapun, jika anda secara khusus memerlukan current_time (bukan current_timestamp), anda perlu menghuraikan data masa secara manual. Di bawah ialah dua pendekatan untuk mencapai perkara ini:
Jenis Penghuraian Masa Tersuai
Buat jenis tersuai, rawTime, yang merangkum kepingan []bait dan menyediakan Time() kaedah untuk menghurai masa:
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) }
Dalam kod imbasan anda, gunakan rawTime untuk menghuraikan secara automatik current_time:
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())
Penghuraian Masa Manual
Daripada bergantung pada jenis tersuai, anda boleh menghuraikan data masa secara manual:
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)
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Data Masa MySQL di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!