diff --git a/engine.go b/engine.go index 17d16063..15c619d3 100644 --- a/engine.go +++ b/engine.go @@ -1516,10 +1516,14 @@ func (engine *Engine) Import(r io.Reader) ([]sql.Result, error) { return results, lastError } -// NowTime2 return current time -func (engine *Engine) NowTime2(sqlTypeName string) (interface{}, time.Time) { +// nowTime return current time +func (engine *Engine) nowTime(col *core.Column) (interface{}, time.Time) { t := time.Now() - return engine.formatTime(sqlTypeName, t.In(engine.DatabaseTZ)), t.In(engine.TZLocation) + var tz = engine.DatabaseTZ + if !col.DisableTimeZone && col.TimeZone != nil { + tz = col.TimeZone + } + return engine.formatTime(col.SQLType.Name, t.In(tz)), t.In(engine.TZLocation) } func (engine *Engine) formatColTime(col *core.Column, t time.Time) (v interface{}) { diff --git a/helpers.go b/helpers.go index 5a0fe7c8..f39ed472 100644 --- a/helpers.go +++ b/helpers.go @@ -422,7 +422,7 @@ func genCols(table *core.Table, session *Session, bean interface{}, useCol bool, if (col.IsCreated || col.IsUpdated) && session.statement.UseAutoTime /*&& isZero(fieldValue.Interface())*/ { // if time is non-empty, then set to auto time - val, t := session.engine.NowTime2(col.SQLType.Name) + val, t := session.engine.nowTime(col) args = append(args, val) var colName = col.Name diff --git a/session_delete.go b/session_delete.go index 1d7d662c..688b122c 100644 --- a/session_delete.go +++ b/session_delete.go @@ -184,12 +184,12 @@ func (session *Session) Delete(bean interface{}) (int64, error) { } } - // !oinume! Insert NowTime to the head of session.statement.Params + // !oinume! Insert nowTime to the head of session.statement.Params condArgs = append(condArgs, "") paramsLen := len(condArgs) copy(condArgs[1:paramsLen], condArgs[0:paramsLen-1]) - val, t := session.engine.NowTime2(deletedColumn.SQLType.Name) + val, t := session.engine.nowTime(deletedColumn) condArgs[0] = val var colName = deletedColumn.Name diff --git a/session_insert.go b/session_insert.go index 705f6a89..478501f0 100644 --- a/session_insert.go +++ b/session_insert.go @@ -126,7 +126,7 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error } } if (col.IsCreated || col.IsUpdated) && session.statement.UseAutoTime { - val, t := session.engine.NowTime2(col.SQLType.Name) + val, t := session.engine.nowTime(col) args = append(args, val) var colName = col.Name @@ -181,7 +181,7 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error } } if (col.IsCreated || col.IsUpdated) && session.statement.UseAutoTime { - val, t := session.engine.NowTime2(col.SQLType.Name) + val, t := session.engine.nowTime(col) args = append(args, val) var colName = col.Name diff --git a/session_update.go b/session_update.go index 4e0f656d..ca062981 100644 --- a/session_update.go +++ b/session_update.go @@ -205,7 +205,7 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 if _, ok := session.statement.columnMap[strings.ToLower(table.Updated)]; !ok { colNames = append(colNames, session.engine.Quote(table.Updated)+" = ?") col := table.UpdatedColumn() - val, t := session.engine.NowTime2(col.SQLType.Name) + val, t := session.engine.nowTime(col) args = append(args, val) var colName = col.Name