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