xorm 条件查询时区的问题

Posted w3liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xorm 条件查询时区的问题相关的知识,希望对你有一定的参考价值。

问题描述:如果在查询的时候,直接传时间格式作为条件,时间会被驱动程序转为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 条件查询时区的问题的主要内容,如果未能解决你的问题,请参考以下文章

sql 中 timestamp 类型的时间 作为条件 如何进行查询

解决XORM的时区问题

Golang, MySQL连接不设置时区的问题

SQL查询条件的问题

SQL多个条件模糊查询问题。。。

关于SQL多条件查询问题: 若其中一条件为空值如何设置忽略该条件而用其它条件组合查询??