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
Libérer: 2024-11-21 05:29:14
original
1061 Les gens l'ont consulté

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)
Copier après la connexion

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")
Copier après la connexion

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))
}
Copier après la connexion

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())
Copier après la connexion

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)
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal