码迷,mamicode.com
首页 > 其他好文 > 详细

xorm 条件查询时区的问题

时间:2019-09-03 19:27:18      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:时间格式   art   idle   xor   where   pass   back   password   sim   

问题描述:如果在查询的时候,直接传时间格式作为条件,时间会被驱动程序转为UTC格式,因此会有8个小时的误差。

解决方案1:

将查询时间转为字符串

db.where("time > ?",  time.Now().Fomart("2006-01-02 15:04:05")).Get(&bean) 

解决方案2:

连接字符串增加loc=Asia%2fShanghai

func initEngine(cfg *config.Config) *xorm.Engine {
 dial := fmt.Sprintf("%v:%v@tcp(%v)/%v?charset=utf8&loc=%v", cfg.Mysql.Username,
cfg.Mysql.Password, cfg.Mysql.HostPort, cfg.Mysql.DBName, "Asia%2fShanghai")
engine, err := xorm.NewEngine("mysql", dial)
if err != nil {
panic(err)
}
engine.SetMaxOpenConns(cfg.Mysql.MaxConns)
engine.SetMaxIdleConns(cfg.Mysql.MaxIdle)
engine.ShowSQL(true)

engine.SetLogger(xorm.NewSimpleLogger(os.Stdout))
engine.Logger().SetLevel(core.LOG_DEBUG)
engine.SetMapper(core.GonicMapper{})
engine.SetTZLocation(time.Local)
return engine
}
参考源码: github.com/go-sql-driver/mysql/dsn.go github.com/go-sql-driver/mysql/packets.go

xorm 条件查询时区的问题

标签:时间格式   art   idle   xor   where   pass   back   password   sim   

原文地址:https://www.cnblogs.com/w3liu/p/11454967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!