golang查询MySQL中datetime字段问题

董泽润 · · 8475 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

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



MySQL Golang

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

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

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



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字段问题

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

8475 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传