..."/> ...">

Maison >développement back-end >Golang >Comment analyser les données temporelles MySQL dans Golang ?

Comment analyser les données temporelles MySQL dans Golang ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-21 05:29:141034parcourir

How to Parse MySQL Time Data in Golang?

Analyse du temps MySQL dans Golang

Dans Golang, la récupération des données temporelles à partir de MySQL peut poser un défi, comme en témoigne l'erreur « pilote non pris en charge -> Scannez la paire : []uint8 -> *time.Time" lors de l'utilisation de l'extrait de code ci-dessous :

var my_time time.Time
rows, err := db.Query("SELECT current_time FROM table")
err := rows.Scan(&my_time)

Pour résoudre ce problème, pensez à utiliser le pilote go-sql-driver/mysql, qui offre la possibilité de convertir automatiquement les types de données DATE et DATETIME en time.Time. Ceci peut être réalisé en ajoutant parseTime=true à la chaîne de connexion, comme illustré ci-dessous :

db, err := sql.Open("mysql", "root:@/?parseTime=true")

Cependant, si vous avez spécifiquement besoin de current_time (plutôt que current_timestamp), vous devrez analyser manuellement les données temporelles. Vous trouverez ci-dessous deux approches pour y parvenir :

Type d'analyse de temps personnalisé

Créez un type personnalisé, rawTime, qui encapsule une tranche []byte et fournit un Time() méthode d'analyse du temps :

type rawTime []byte

func (t rawTime) Time() (time.Time, error) {
    return time.Parse("15:04:05", string(t))
}

Dans votre code de numérisation, utilisez rawTime pour analyser automatiquement le 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())

Analyse manuelle de l'heure

Au lieu de vous fier à un type personnalisé, vous pouvez analyser manuellement les données temporelles :

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)

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