首頁  >  文章  >  後端開發  >  如何解決 Go 中從 MySQL 解析時間時出現「不支援的驅動程式 -> 掃描對:[]uint8 -> *time.Time」錯誤?

如何解決 Go 中從 MySQL 解析時間時出現「不支援的驅動程式 -> 掃描對:[]uint8 -> *time.Time」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-11-10 14:52:02360瀏覽

How to Solve 掃描對:[]uint8 -> *time.Time" 在 Go 解析 MySQL 時間時發生錯誤? " /> 掃描對:[]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 步:建立自訂Type

定義一個包裝原始位元組切片([]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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn