如何设置数据库的时区

我正在尝试在gorm中设置数据库的时区。我将我的数据库时区设置为 UTC,在 pgadmin 中我添加了一个带有时区和值 UTC 的参数。

一切正常,数据以 UTC 保存,以 UTC 检索,但是当我将新结构保存到数据库时,例如User,保存后如果验证User.created_at不在 UTC 时区,则在我的本地时区。

我想让这个工作,因为我创建了一个对User正在进行的请求的响应。


更新:我的代码:


type Customer struct {

    ID          uuid.UUID  `gorm:"type:uuid;primary_key;index;" json:"id"`

    CreatedAt   time.Time  `json:"created_at"`

    UpdatedAt   time.Time  `json:"updated_at"`

    DeletedAt   *time.Time `json:"deleted_at,omitempty"`

 }


慕妹3146593
浏览 298回答 1
1回答

qq_遁去的一_1

你可以在gorm中尝试回调。像这样// updateTimeStampForCreateCallback will set `CreatedAt`, `UpdatedAt` when creatingfunc updateTimeStampForCreateCallback(scope *gorm.Scope) {    if !scope.HasError() {        now := time.Now().UTC()        if createdAtField, ok := scope.FieldByName("CreatedAt"); ok {            if createdAtField.IsBlank {                createdAtField.Set(now)            }        }        if updatedAtField, ok := scope.FieldByName("UpdatedAt"); ok {            if updatedAtField.IsBlank {                updatedAtField.Set(now)            }        }    }}// updateTimeStampForUpdateCallback will set `UpdatedAt` when updatingfunc updateTimeStampForUpdateCallback(scope *gorm.Scope) {    if _, ok := scope.Get("gorm:update_column"); !ok {        scope.SetColumn("UpdatedAt", time.Now().UTC())    }}然后在 db.Callback() 中注册db.Callback().Create().Replace("gorm:update_time_stamp", updateTimeStampForCreateCallback)db.Callback().Update().Replace("gorm:update_time_stamp", updateTimeStampForUpdateCallback)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go