From 6e70297bc853feeb5f49289fffa3a1b1a8692574 Mon Sep 17 00:00:00 2001 From: DrWrong Date: Tue, 5 Jun 2018 15:59:16 +0800 Subject: [PATCH] Convert args to database time --- session_raw.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/session_raw.go b/session_raw.go index 69bf9b3c..e796c564 100644 --- a/session_raw.go +++ b/session_raw.go @@ -21,9 +21,28 @@ func (session *Session) queryPreprocess(sqlStr *string, paramStr ...interface{}) session.lastSQLArgs = paramStr } +func (session *Session) argsConverter(args ...interface{}) []interface{} { + if session.engine.DatabaseTZ == nil { + return args + } + for i, arg := range args { + switch t := arg.(type) { + case time.Time: + args[i] = t.In(session.engine.DatabaseTZ) + case *time.Time: + if t != nil { + dbTime := t.In(session.engine.DatabaseTZ) + args[i] = &dbTime + } + } + } + return args +} + func (session *Session) queryRows(sqlStr string, args ...interface{}) (*core.Rows, error) { defer session.resetStatement() + args = session.argsConverter(args) session.queryPreprocess(&sqlStr, args...) if session.engine.showSQL { @@ -150,7 +169,7 @@ func (session *Session) queryBytes(sqlStr string, args ...interface{}) ([]map[st func (session *Session) exec(sqlStr string, args ...interface{}) (sql.Result, error) { defer session.resetStatement() - + args = session.argsConverter(args) session.queryPreprocess(&sqlStr, args...) if session.engine.showSQL {