Apabila cuba mendapatkan nilai masa daripada pangkalan data MySQL menggunakan Go, anda mungkin menghadapi "pemandu tidak disokong -> Ralat pasangan imbas". Isu ini berpunca daripada tingkah laku lalai pemacu MySQL Go yang tidak menukar nilai DATE dan DATETIME secara automatik kepada masa. Objek masa.
Untuk menyelesaikan isu ini, tambah parseTime=true pada rentetan sambungan MySQL anda. Parameter ini mengarahkan pemandu untuk melakukan penghuraian yang diperlukan untuk anda.
db, err := sql.Open("mysql", "root:@/?parseTime=true") if err != nil { panic(err) } defer db.Close() var myTime time.Time rows, err := db.Query("SELECT current_timestamp()") if rows.Next() { if err = rows.Scan(&myTime); err != nil { panic(err) } } fmt.Println(myTime)
Jika anda tidak boleh menggunakan cap_masa semasa dan mesti menggunakan masa_masa, anda akan perlu melakukan penghuraian sendiri.
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) } 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())
Jenis penghuraian tersuai ini menukarkan hirisan bait diambil ke dalam masa. Objek masa menggunakan format masa tertentu ("15:04:05" dalam kes ini).
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Masa dari Pangkalan Data MySQL dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!