customize time format in sql log
This commit is contained in:
parent
f473761813
commit
ba01300653
@ -13,8 +13,12 @@ import (
|
|||||||
"gorm.io/gorm/utils"
|
"gorm.io/gorm/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// TimeParamFormat defines the format of the time parameter in ExpalianSQL.
|
||||||
|
TimeParamFormat = "2006-01-02 15:04:05.999"
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
tmFmtWithMS = "2006-01-02 15:04:05.999"
|
|
||||||
tmFmtZero = "0000-00-00 00:00:00"
|
tmFmtZero = "0000-00-00 00:00:00"
|
||||||
nullStr = "NULL"
|
nullStr = "NULL"
|
||||||
)
|
)
|
||||||
@ -47,14 +51,14 @@ func ExplainSQL(sql string, numericPlaceholder *regexp.Regexp, escaper string, a
|
|||||||
if v.IsZero() {
|
if v.IsZero() {
|
||||||
vars[idx] = escaper + tmFmtZero + escaper
|
vars[idx] = escaper + tmFmtZero + escaper
|
||||||
} else {
|
} else {
|
||||||
vars[idx] = escaper + v.Format(tmFmtWithMS) + escaper
|
vars[idx] = escaper + v.Format(TimeParamFormat) + escaper
|
||||||
}
|
}
|
||||||
case *time.Time:
|
case *time.Time:
|
||||||
if v != nil {
|
if v != nil {
|
||||||
if v.IsZero() {
|
if v.IsZero() {
|
||||||
vars[idx] = escaper + tmFmtZero + escaper
|
vars[idx] = escaper + tmFmtZero + escaper
|
||||||
} else {
|
} else {
|
||||||
vars[idx] = escaper + v.Format(tmFmtWithMS) + escaper
|
vars[idx] = escaper + v.Format(TimeParamFormat) + escaper
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
vars[idx] = nullStr
|
vars[idx] = nullStr
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/jinzhu/now"
|
"github.com/jinzhu/now"
|
||||||
"gorm.io/gorm/logger"
|
"gorm.io/gorm/logger"
|
||||||
@ -101,7 +102,6 @@ func TestExplainSQL(t *testing.T) {
|
|||||||
Vars: []interface{}{"jinzhu", 1, 0.1753607109, true, []byte("12345"), tt, &tt, nil, "w@g.\"com", myrole, pwd, &js, &es},
|
Vars: []interface{}{"jinzhu", 1, 0.1753607109, true, []byte("12345"), tt, &tt, nil, "w@g.\"com", myrole, pwd, &js, &es},
|
||||||
Result: fmt.Sprintf(`create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass, json_struct, example_struct) values ("jinzhu", 1, 0.1753607109, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.\"com", "admin", "pass", %v, %v)`, format(jsVal, `"`), format(esVal, `"`)),
|
Result: fmt.Sprintf(`create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass, json_struct, example_struct) values ("jinzhu", 1, 0.1753607109, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.\"com", "admin", "pass", %v, %v)`, format(jsVal, `"`), format(esVal, `"`)),
|
||||||
},
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for idx, r := range results {
|
for idx, r := range results {
|
||||||
@ -109,4 +109,20 @@ func TestExplainSQL(t *testing.T) {
|
|||||||
t.Errorf("Explain SQL #%v expects %v, but got %v", idx, r.Result, result)
|
t.Errorf("Explain SQL #%v expects %v, but got %v", idx, r.Result, result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Run("customize time format", func(t *testing.T) {
|
||||||
|
orignalFormat := logger.TimeParamFormat
|
||||||
|
t.Cleanup(func() { logger.TimeParamFormat = orignalFormat })
|
||||||
|
|
||||||
|
logger.TimeParamFormat = time.RFC3339Nano
|
||||||
|
|
||||||
|
tnano := now.MustParse("2020-02-23T11:10:10.123456789+08:00")
|
||||||
|
var zt time.Time
|
||||||
|
sql := "create table users (name, create_at, update_at, delete_at, init_at) values (?, ?, ?, ?, ?)"
|
||||||
|
vars := []interface{}{"jinzhu", tnano, &tnano, zt, &zt}
|
||||||
|
expected := `create table users (name, create_at, update_at, delete_at, init_at) values ("jinzhu", "2020-02-23T11:10:10.123456789+08:00", "2020-02-23T11:10:10.123456789+08:00", "0000-00-00 00:00:00", "0000-00-00 00:00:00")`
|
||||||
|
if result := logger.ExplainSQL(sql, nil, `"`, vars...); result != expected {
|
||||||
|
t.Errorf("Explain SQL expects %v, but got %v", expected, result)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user