From 706912ec9747999f129d280df902cf3ba7ff2805 Mon Sep 17 00:00:00 2001 From: Leandro Franciscato Date: Mon, 17 Oct 2022 12:19:47 -0300 Subject: [PATCH] adding sqlserver, mysql to function --- clause/function.go | 10 ++++++++-- tests/query_test.go | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/clause/function.go b/clause/function.go index ae39f743..e4f7f27c 100644 --- a/clause/function.go +++ b/clause/function.go @@ -8,8 +8,10 @@ import ( type Database string var ( - Postgres Database = "postgres" - Sqlite Database = "sqlite" + Postgres Database = "postgres" + Sqlite Database = "sqlite" + Mysql Database = "mysql" + SqlServer Database = "sqlserver" ) type Function interface { @@ -33,6 +35,10 @@ func (fnc FuncDateWithoutTime) GetSql() string { fnc.SQL = fmt.Sprintf(" to_char(%s, %s) as %s", fnc.Field, "'YYYY-MM-DD'", alias) case Sqlite: fnc.SQL = fmt.Sprintf(" strftime(%s, %s) as %s", "'%Y-%m-%d' ", fnc.Field, alias) + case Mysql: + fnc.SQL = fmt.Sprintf(" DATE_FORMAT(%s, %s) as %s", fnc.Field, "'%Y-%m-%d' ", alias) + case SqlServer: + fnc.SQL = fmt.Sprintf(" FORMAT(%s, %s) as %s", fnc.Field, "'yyyy-MM-dd' ", alias) default: log.Print("database not implemented yet for this function") return "" diff --git a/tests/query_test.go b/tests/query_test.go index eb281df9..b1e17aac 100644 --- a/tests/query_test.go +++ b/tests/query_test.go @@ -1360,7 +1360,7 @@ func TestQueryResetNullValue(t *testing.T) { AssertEqual(t, q2, qs[1]) } -func TestFuncDateWihtoutTimeSQLITE(t *testing.T) { +func TestFuncDateWihtoutTime(t *testing.T) { users := []User{ *GetUser("find", Config{}), *GetUser("find", Config{}), @@ -1376,8 +1376,10 @@ func TestFuncDateWihtoutTimeSQLITE(t *testing.T) { Birthday string Name string } - var fn clause.FuncDateWithoutTime = clause.FuncDateWithoutTime{Database: "sqlite", Field: "birthday"} + + var fn clause.FuncDateWithoutTime = clause.FuncDateWithoutTime{Database: clause.Database(DB.Dialector.Name()), Field: "birthday"} var sql string = fn.GetSql() + if err := DB.Model(&User{}).Select([]string{sql, "name"}).Where("name = ?", "find").First(&first).Error; err != nil { t.Errorf("errors happened when query first: %v", err) } else {