扫描对:[]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中文网其他相关文章!