亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何設置數據庫的時區

如何設置數據庫的時區

Go
慕妹3146593 2022-05-23 15:03:07
我正在嘗試在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"` }
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

你可以在gorm中嘗試回調。像這樣


// updateTimeStampForCreateCallback will set `CreatedAt`, `UpdatedAt` when creating

func 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 updating

func 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)



查看完整回答
反對 回復 2022-05-23
  • 1 回答
  • 0 關注
  • 295 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號