ホームページ  >  記事  >  バックエンド開発  >  Golang で MySQL の時間データを解析するにはどうすればよいですか?

Golang で MySQL の時間データを解析するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-21 05:29:14997ブラウズ

How to Parse MySQL Time Data in Golang?

Golang での MySQL 時間解析

Golang では、「サポートされていないドライバー」というエラーに代表されるように、MySQL から時間データを取得することが困難になる可能性があります。 -> スキャン ペア: []uint8 -> *time.Time" 以下のコード スニペットを使用する場合:

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

この問題を解決するには、go-sql-driver/mysql ドライバーの使用を検討してください。これは、DATE および DATETIME データ型を time.Time に自動的に変換するオプションを提供します。これは、以下に示すように、接続文字列に parseTime=true を追加することで実現できます。

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

ただし、(current_timestamp ではなく) current_time が特に必要な場合は、時刻データを手動で解析する必要があります。これを実現するための 2 つのアプローチを以下に示します。

カスタム時間解析タイプ

[]byte スライスをカプセル化し、Time() を提供するカスタム タイプ rawTime を作成します。時間解析のメソッド:

type rawTime []byte

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

スキャン コードで、rawTime を使用して 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())

Manual Time Parsing

カスタム タイプに依存する代わりに、時間データを手動で解析できます:

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)

以上がGolang で MySQL の時間データを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。