gorm使用Save方法处理时间字段的坑
视频地址
测试代码以及说明
package gorm_tests import ( "fmt" "github.com/stretchr/testify/require" "gorm.io/driver/mysql" "gorm.io/gorm" "testing" "time" ) const ( userTableName = "user" ) type User struct { ID uint `gorm:"primaryKey;column:id"` Name string `gorm:"column:name"` Age uint8 `gorm:"column:age"` // Notice gorm内置自动更新的字段!如果是创建/更新的话会自动将当前时间创建/更新进去 CreatedAt time.Time `gorm:"column:created_at"` UpdatedAt time.Time `gorm:"column:updated_at"` // Notice 如果要自定义一个不一样的字段,需要加 default:null // Notice 并且在创建数据库的时候 这2个字段要加额外的配置: /* `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', */ CreateTime time.Time `gorm:"column:create_time;default:null"` UpdateTime time.Time `gorm:"column:update_time;default:null"` } func (u User) TableName() string { return userTableName } func TestT1(t *testing.T) { dsn := "root:123@tcp(127.0.0.1:3307)/whw?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) require.Equal(t, err, nil) fmt.Println("db: ", db) user := &User{ ID: 88, // 如果ID存在则更新,如果ID不存在则创建! } db = db.Model(&User{}) db.First(&user) user.Name = "天蓬" user.Age = 99 // Notice Save方法 err = db.Save(&user).Error require.Equal(t, err, nil) }
~~~