掃描對:[]uint8 -> *time.Time" 在 Go 解析 MySQL 時間時發生錯誤? " /> 掃描對:[]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 步:建立自訂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中文網其他相關文章!