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
1042 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!

source:php.cn
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