GORM Playground Link

https://github.com/go-gorm/playground/pull/821

Description

A model has time.Time field with a default tag. When saving a list of these models, that time.Time field doesn't get updated (you can see it in the SQL). After removing the default tag, it gets updated correctly. Also if saving just one model (not a list), it also gets updated.

This problem doesn't happen with int field, that also has a default tag.

type Price struct {
    ProductId int       `gorm:"primaryKey"`
    Price     int       `gorm:"default:1"`
    SomeTime  time.Time `gorm:"default:'2015-10-22T14:00:00Z'"`
}

func main() {
    prices := []Price{
        {ProductId: 1, Price: 100, SomeTime: time.Now()},
        {ProductId: 2, Price: 150, SomeTime: time.Now()},
    }

    // Will correctly create two rows
    db.Debug().Save(prices)

    // Will NOT update some_time field (check SQL below)
    //
    // [1.647ms] [rows:2] INSERT INTO "prices" ("price","some_time","product_id") VALUES
    //                    (100,'2015-10-23 00:00:00',1),(150,'2024-06-06 21:42:19.527',2) ON CONFLICT ("product_id")
    //                    DO UPDATE SET "price"="excluded"."price" RETURNING "some_time","product_id"
    prices[1].SomeTime = time.Now().Add(-10000 * time.Hour)
    db.Debug().Save(prices)
}