GORM Изменить формат времени в postgresql - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема со временем в postgresql таблице с generi c модель GORM

   gorm.Model

с полями

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

все даты в таблице имеют формат 2020-04 -21 22: 05: 07.067446 Пожалуйста, могу ли я перейти на timstamp (LONG) или что-то без .067446

Спасибо за любую помощь

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете использовать хук BeforeCreate и BeforeUpdate для gorm.Model, чтобы вручную установить значение для базы данных. Создайте BaseModel, так как вы не можете использовать тип-приемник для другого типа пакета.

type BaseModel struct {
    gorm.Model
}

Затем вручную установите значение CreatedAt и UpdatedAt без наносекунд

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