Golang で MySQL から時刻データを取得すると、スキャン ペア: []uint8 -> *time.Time" エラーが発生しますか? Golang で MySQL から時刻データを取得すると、「 /> スキャン ペア: []uint8 -> *time.Time」エラーが発生しますか? " />
Golang を使用して MySQL データベースから時間データを取得しようとすると、次のようなエラーが発生する場合があります。
unsupported driver -> Scan pair: []uint8 -> *time.Time
このエラーは、Go SQL ドライバーのデフォルト動作が MySQL の DATE または DATETIME フィールドを Go time.Time 型に自動的に解析しないために発生します。
この問題を解決するには、データベース接続文字列に parseTime=true を追加して自動解析を有効にします。
db, err := sql.Open("mysql", "root:@/?parseTime=true")
この設定を使用すると、ドライバーは DATE および DATETIME 値を時刻に自動的に変換します。時間オブジェクト。
特定の解析要件が発生した場合は、カスタム解析を選択できます。
[]byte をラップし、解析用の Time() メソッドを含むカスタム タイプを定義します。
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())
以上がGolang で MySQL から時刻データを取得するときに発生する「サポートされていないドライバー -> スキャン ペア: []uint8 -> *time.Time」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。