Your issue may already be reported! Please search on the issue track before creating one.

What version of Go are you using (go version)?

go version go1.13.1 linux/amd64

Which database and its version are you using?

mysql5.7

Please provide a complete runnable program to reproduce your issue. IMPORTANT

Need to runnable with GORM's docker compose config or please provides your config.

package main

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mssql"
    _ "github.com/jinzhu/gorm/dialects/mysql"
    _ "github.com/jinzhu/gorm/dialects/postgres"
    _ "github.com/jinzhu/gorm/dialects/sqlite"
)

var db *gorm.DB

func init() {
    var err error
    db, err = gorm.Open("sqlite3", "test.db")
    // db, err = gorm.Open("postgres", "user=gorm password=gorm DB.name=gorm port=9920 sslmode=disable")
    // db, err = gorm.Open("mysql", "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True")
    // db, err = gorm.Open("mssql", "sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm")
    if err != nil {
        panic(err)
    }
    db.LogMode(true)
}

func main() {
    exp := gorm.Expr("sort + 1")
    if err = db.Model(&model.Test{}).Where("id = ?", 1).Update("sort", exp).Error; err != nil {
        logger.Error(err)
        return
    }
}

for some operations, I don't want to update "updated_at" field, is it possible?

The sql quest above is :

UPDATE `test` SET `sort` = sort + 1, `updated_at` = '2019-12-11 17:08:59'  WHERE (id = 1) 

what I want is:

UPDATE `test` SET `sort` = sort + 1  WHERE (id = 1) 

Comment From: lil5

For those who haven't found it:

https://gorm.io/docs/update.html#Without-Hooks-x2F-Time-Tracking

u := User{
  ID: 111,
  Name: "hello",
  Age: 18,
}

db.Save(&u)
// UPDATE users SET name='hello', age=18, updated_at='2013-11-17 21:34:10' WHERE id=111;

db.Model(&u).UpdateColumns(&u)
// UPDATE users SET name='hello', age=18 WHERE id = 111;