信仰在空中飘扬
(信仰在空中飘扬)
1
v4.0.8
使用gorm 查询tidb 的datetime字段的类型出现8小时时差问题
golang 程序中的配置为
//dsn := fmt.Sprintf(“%s:%s@tcp(%s)/%s?timeout=%s&readTimeout=%s&writeTimeout=%s&parseTime=True&loc=Asia%%2FShanghai”
使用的部分gorm 代码如下
理论来说datetime 字段的类型不包含时区信息,但是为啥在gorm 中查询到的数据会有时差问题 ?
在去掉最后的 loc=Asia%%2FShanghai" 数据就恢复了正常 。
由于我们线上业务使用的是统一的框架配置,所以想分析下背后的逻辑是什么 ?
字段类型是 datetime 所以插入的是什么值,取出来的就是什么值,不受 timezone 的影响
gorm 取出这个字段的值之后,又做了处理(因为你们配置了 parseTime=True
以及 loc=Asia/Shanghai
),所以应该是 gorm 代码的问题,不是 tidb 的问题,你可以用 mysql cli 查一下验证一下。
1 个赞
信仰在空中飘扬
(信仰在空中飘扬)
3
好的。多谢,也怀疑是gorm 的问题,架构组的同事在查了
system
(system)
关闭
5
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。