xorm+postgresql插入数据,自动生成带毫秒的时间戳

数据库的创建时间字段设置成timestamp,golang中的model中,xorm只指定了created的标签,自动生成的时间默认格式是:2006-01-02 15:04:05,所以需要指定xorm的类型标签为timestampz,进入另一个format分支

type Batch struct {
    CreatedTime          types.LocalTime            `json:"created_time" xorm:"timestampz created"`
    ModifyTime           types.LocalTime            `json:"modify_time" xorm:"timestampz updated"`
}

源码参考:engine.go中的formatTime()方法(由方法nowTime()调用)

// 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
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值