Maison  >  Article  >  développement back-end  >  Comment analyser le temps d'une base de données MySQL dans Go ?

Comment analyser le temps d'une base de données MySQL dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-11 00:28:03940parcourir

How to Parse Time from a MySQL Database in Go?

Analyse du temps à partir 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.

Exemple

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)

Analyse personnalisée

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn