扫描对:[]uint8 -> *time.Time" 在 Golang 中从 MySQL 检索时间数据时出错? " /> 扫描对:[]uint8 -> *time.Time" 在 Golang 中从 MySQL 检索时间数据时出错? " />
尝试使用 Golang 从 MySQL 数据库检索时间数据时,您可能会遇到类似于以下内容的错误:
unsupported driver -> Scan pair: []uint8 -> *time.Time
出现此错误是因为 Go SQL 驱动程序的默认行为不会自动将 MySQL 中的 DATE 或 DATETIME 字段解析为 Go time.Time 类型。
要解决此问题,您可以通过在数据库连接字符串中添加 parseTime=true 来启用自动解析。
db, err := sql.Open("mysql", "root:@/?parseTime=true")
使用此设置,驱动程序将自动将 DATE 和 DATETIME 值转换为时间。时间对象。
如果遇到特定解析要求,可以选择自定义解析:
定义一个封装 []byte 的自定义类型,并包含用于解析的 Time() 方法。
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) }
在扫描代码中使用自定义类型来手动解析时间值。
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())
以上是在 Golang 中从 MySQL 检索时间数据时如何解决'不支持的驱动程序 -> 扫描对:[]uint8 -> *time.Time”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!