首頁 > 後端開發 > Golang > 主體

如何從資料庫解析時間:為什麼我會收到'不支援的驅動程式 -> 掃描對:[]uint8 -> *time.Time”錯誤?

Patricia Arquette
發布: 2024-11-12 20:03:02
原創
772 人瀏覽過

How to Parse Time from a Database:  Why am I getting the 掃描對:[]uint8 -> *time.Time」錯誤? " /> 掃描對:[]uint8 -> *time.Time" 錯誤? " />

從資料庫解析時間:故障排除和解決方案

使用資料庫時,在嘗試檢索資料時經常會遇到錯誤。在這種特定情況下,錯誤訊息“不支援”驅動程式->掃描對:[]uint8 -> *time.Time”表示資料庫驅動程式無法自動將檢索到的資料(在本例中為位元組數組)轉換為time.Time 值。

要修正此問題,可以使用parseTime連接字串中的參數設定parseTime=true 指示驅動程式自動將MySQL 的DATE 和DATETIME 值解析為time.Time

範例:

db, err := sql.Open("mysql", "root:@/?parseTime=true")
登入後複製

透過啟用parseTime,驅動程式將無縫轉換時間值,允許直接指派給 time.Time 變數。

SQL 範例語句:

var myTime time.Time
rows, err := db.Query("SELECT current_timestamp()")
登入後複製

注意:此方法適用於 current_timestamp,但不適用於 current_time。如果您需要 current_time 資料解析,則需要實作自訂解析機制。

自訂解析:

  1. 定義一個自訂類型,包裝原始資料型別來處理解析:
type rawTime []byte

func (t rawTime) Time() (time.Time, error) {
    return time.Parse("15:04:05", string(t))
}
登入後複製
  1. 在掃描中使用自訂類型code:
var myTime rawTime
rows, err := db.Query("SELECT current_time()")
登入後複製
  1. 取得解析後的時間。使用自訂方法取得時間值:
fmt.Println(myTime.Time())
登入後複製

按照以下步驟,可以有效解析來自資料庫的時間值並輕鬆處理不同的資料格式。

以上是如何從資料庫解析時間:為什麼我會收到'不支援的驅動程式 -> 掃描對:[]uint8 -> *time.Time”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板