Go で MySQL からの時間を解析中にスキャン ペア: []uint8 -> *time.Time" エラーが発生しましたか? 「 /> スキャン ペア: []uint8 -> *time.Time」Go で MySQL からの時間を解析中にエラーが発生しましたか? " />
MySQL データベースから時刻値を取得する際にエラーが発生するとイライラすることがあります。この記事では、特定のエラー「サポートされていないドライバー ->」に対処します。スキャンペア: []uint8 -> *time.Time" であり、一般的な go-sql-driver/mysql ライブラリを使用したソリューションを提供します。
go-sql-driver/mysql は自動解析のサポートを提供します。 DATE 列と DATETIME 列を time.Time 値に変換します。この機能を有効にするには、接続文字列にパラメータ「parseTime=true」を追加します。有効にすると、SELECT current_timestamp() のようなクエリが自動的に希望の時刻形式にマップされます。
自動解析が適切でないか利用できない場合 (例: current_time() の取得)、カスタム解析が必要です。
ステップ 1:カスタム タイプの作成
生のバイト スライス ([]byte) をラップし、時間値を time.Time に解析する Time() メソッドを実装するカスタム タイプを定義します。例:
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) }
ステップ 2: スキャンでカスタム タイプを使用する
スキャン コードで、time.Time への直接参照をカスタム タイプに置き換えます:var myTime rawTime rows, err = db.Query("SELECT current_time()") if err = rows.Scan(&myTime); err != nil { // Handle error }
ステップ 3: 生の時間を解析された時間に変換する
最後に、カスタム型で Time() を呼び出して、解析された時間の値を取得します。以上がGo で MySQL から時間を解析する際に発生する「サポートされていないドライバー -> スキャン ペア: []uint8 -> *time.Time」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。