golang查询MySQL中datetime字段问题

以前一直用 int 存储 unix 时间字段,这次和其他组交互时出现在时间问题。长话短说,这和 Python 查询 MySQL 一样,对于 datetime 默认会使用 UTC 时间,但是国内是东八区,也就是 Asia/Shanghai,需要注意时间差8小时。

beego issue441, 中有提到过,具体解决办法就是:


golang查询MySQL中datetime字段问题_第1张图片
MySQL Golang

构建 DSN 时增加 loc 指定时区,并区增加对时间的解析。打印出来的 uri:

xiaoju:@tcp(127.0.0.1:3306)/test?charset=utf8&loc=Asia%2FShanghai&parseTime=true

后面的 parseTime 必须要有,用法如下:


golang查询MySQL中datetime字段问题_第2张图片
row.Scan

这样就可以直接将 MySQL 中的 datetime 类型映射到 golang 中的 time.Time


参考:

https://github.com/go-sql-driver/mysql#timetime-support

https://github.com/astaxie/beego/issues/441

https://github.com/go-sql-driver/mysql/issues/405

https://github.com/go-sql-driver/mysql/issues/203

你可能感兴趣的:(golang查询MySQL中datetime字段问题)