Go で MySQL から時間を解析する際に発生する「サポートされていないドライバー -> スキャン ペア: []uint8 -> *time.Time」エラーを解決する方法

Barbara Streisand
リリース: 2024-11-10 14:52:02
オリジナル
358 人が閲覧しました

How to Solve Go で MySQL からの時間を解析中にスキャン ペア: []uint8 -> *time.Time" エラーが発生しましたか? 「 /> スキャン ペア: []uint8 -> *time.Time」Go で MySQL からの時間を解析中にエラーが発生しましたか? " />

Go でデータベースからの時刻解析を処理する方法

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

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