代码之家  ›  专栏  ›  技术社区  ›  MrDuk

go xorm是否可以检测datetime(3)类型?

  •  0
  • MrDuk  · 技术社区  · 6 年前

    我的代码最终在 go-xorm 以下内容:

    // formatTime format time as column type
    func (engine *Engine) formatTime(sqlTypeName string, t time.Time) (v interface{}) {
        switch sqlTypeName {
        case core.Time:
            s := t.Format("2006-01-02 15:04:05") //time.RFC3339
            v = s[11:19]
        case core.Date:
            v = t.Format("2006-01-02")
        case core.DateTime, core.TimeStamp:
            v = t.Format("2006-01-02 15:04:05")
        case core.TimeStampz:
            if engine.dialect.DBType() == core.MSSQL {
                v = t.Format("2006-01-02T15:04:05.9999999Z07:00")
            } else {
                v = t.Format(time.RFC3339Nano)
            }
        case core.BigInt, core.Int:
            v = t.Unix()
        default:
            v = t
        }
        return
    }
    

    问题是,我在数据库中的实际类型是 datetime(3) --xorm认为 datetime 不过,有效地截断了我的ms精度。有办法解决这个问题吗?

    这是我正在处理的一个项目中的一个基本依赖项,因此现在不使用xorm不是一个选项,不幸的是。

    0 回复  |  直到 6 年前