zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    JS定时循环
    JS分组
    中位数 题解
    NOIP2017 D2T3 题解
    CF949E Binary Cards 题解
    友善的树形DP
    300英雄的危机(heroes)
    [北京省选集训2019]图的难题 题解
    洛谷 P1268 树的重量 题解
    洛谷 P2633 Count on a tree 题解
  • 原文地址:https://www.cnblogs.com/w3liu/p/11454967.html
Copyright © 2011-2022 走看看