ホームページ > バックエンド開発 > Golang > Golang で MySQL から時刻データを取得するときに発生する「サポートされていないドライバー -> スキャン ペア: []uint8 -> *time.Time」エラーを解決する方法

Golang で MySQL から時刻データを取得するときに発生する「サポートされていないドライバー -> スキャン ペア: []uint8 -> *time.Time」エラーを解決する方法

Patricia Arquette
リリース: 2024-11-13 08:46:02
オリジナル
563 人が閲覧しました

How to Resolve Golang で MySQL から時刻データを取得すると、スキャン ペア: []uint8 -> *time.Time" エラーが発生しますか? Golang で MySQL から時刻データを取得すると、「 /> スキャン ペア: []uint8 -> *time.Time」エラーが発生しますか? " />

Golang のデータベースからの解析時間エラーについて

Golang を使用して MySQL データベースから時間データを取得しようとすると、次のようなエラーが発生する場合があります。

unsupported driver -> Scan pair: []uint8 -> *time.Time
ログイン後にコピー

このエラーは、Go SQL ドライバーのデフォルト動作が MySQL の DATE または DATETIME フィールドを Go time.Time 型に自動的に解析しないために発生します。

解決策 1: 自動解析を有効にする

この問題を解決するには、データベース接続文字列に parseTime=true を追加して自動解析を有効にします。

db, err := sql.Open("mysql", "root:@/?parseTime=true")
ログイン後にコピー

この設定を使用すると、ドライバーは DATE および DATETIME 値を時刻に自動的に変換します。時間オブジェクト。

解決策 2: カスタム解析

特定の解析要件が発生した場合は、カスタム解析を選択できます。

  • []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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート