Mr.Yuan

苟正其身矣,于从政乎何有?不能正其身,如正人何?

暴风雨之后,不止没看到彩虹,还感冒了。
  menu
84 文章
25941 浏览
1 当前访客
ღゝ◡╹)ノ❤️

golang gorm 时间查询, 时区问题

在使用 gorm 开发的时候 发现一个奇怪的问题.

生成的SQL, 在程序中查询不到内容, 在是Navicat for MySQL中查询正常.

gorm 生成的sql及结果.

imagepng

可以看到, 大大的红字

[0 rows affected or returned ]

把 sql 复制到 Navicat中

imagepng

这 *** 不是有数据吗! 😭

然后!!!!!
尝试过很多方法.都没有解决问题.

直到想到了一个很容易忽略的问题: 时区.

使用mysql的时间字段遇到如下两个问题
1.使用go-sql-driver来连接mysql数据库,获取的时区默认是UTC +0的,与本地的东八区是有区别,在业务处理中会出现问题
2.获取mysql中的日期,是string类型,需要在代码中用time.Parse进行转化

解决方案:
在连接的dsn中,添加parseTime=trueloc=Local,此处的local可以换为具体的时区(Asia/Shanghai)

数据库链接:

 root:root@tcp(localhost:3306)/abc?charset=utf8

改为

 root:root@tcp(localhost:3306)/abc?charset=utf8&parseTime=True&loc=Local

问题解决...

imagepng

结论

大多时候, 找不到问题的问题. 会是一个很煞笔的问题....😂


标题:golang gorm 时间查询, 时区问题
作者:K
地址:https://pala.icu/articles/2019/12/21/1576857867025.html