GORM 更改 postgresql 中的时间格式

GORM Change time format in postgresql

我在使用通用 GORM 模型

的 postgresql table 中遇到时间问题
   gorm.Model

具有字段

    type Model struct {
    ID        uint `gorm:"primary_key"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt *time.Time `sql:"index"`
}

table 中的所有日期的格式为 2020-04-21 22:05:07.067446 请问我可以更改为 timstamp(LONG) 或没有 .067446

的东西吗

感谢您的帮助

您可以使用 BeforeCreate and BeforeUpdate 挂钩 gorm.Model 来手动设置数据库的值。 创建 BaseModel 因为您不能将类型接收器用于其他包类型。

type BaseModel struct {
    gorm.Model
}

然后手动设置值CreatedAtUpdatedAt没有纳秒

func (b *BaseModel) BeforeCreate() (err error) {
    b.CreatedAt = time.Unix(time.Now().Unix(), 0) // Calculate without nanosec
    return
}

func (b *BaseModel) BeforeUpdate() (err error) {
    b.UpdatedAt = time.Unix(time.Now().Unix(), 0) // Calculate without nanosec
    return
}

然后在您的数据库模型中使用 BaseModel

type Data struct {
    BaseModel
    Name string
}