Maison > Article > développement back-end > Comment analyser le temps d'une base de données MySQL dans Go ?
Lorsque vous essayez de récupérer une valeur temporelle à partir d'une base de données MySQL à l'aide de Go, vous pouvez rencontrer un "pilote non pris en charge -> Erreur "Scanner la paire". Ce problème provient du comportement par défaut du pilote MySQL de Go qui ne convertit pas automatiquement les valeurs DATE et DATETIME en objets time.Time.
Pour résoudre ce problème, ajoutez parseTime=true à votre chaîne de connexion MySQL. Ce paramètre demande au pilote d'effectuer l'analyse nécessaire pour vous.
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)
Si vous ne pouvez pas utiliser current_timestamp et devez utiliser current_time, vous devez effectuer l'analyse vous-même.
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())
Ce type d'analyse personnalisé convertit le tranche d'octets en un objet time.Time utilisant un format d'heure spécifique ("15:04:05" dans ce cas).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!