From b0caaf47be60e3f3c84ce8ebfe2213dc7b00a9cb Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 4 Feb 2021 17:18:21 +0800 Subject: [PATCH] Add sqlfunc tochar todate datediff --- .../DbMethods/DefaultDbMethod.cs | 20 +++++++++++++++++++ .../ExpressionsToSql/DbMethods/IDbMethods.cs | 4 ++++ .../ExpressionsToSql/DbMethods/SqlFunc.cs | 3 +++ .../MethodCallExpressionResolve.cs | 6 ++++++ 4 files changed, 33 insertions(+) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index e55079a44..d555e08ed 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -443,5 +443,25 @@ namespace SqlSugar var parameter2 = model.Args[1]; return string.Format(" ({0} | {1}) ", parameter.MemberName, parameter2.MemberName); ; } + + public string Oracle_ToDate(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter2 = model.Args[1]; + return string.Format(" to_date({0},{1}) ", parameter.MemberName, parameter2.MemberName); ; + } + public string Oracle_ToChar(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter2 = model.Args[1]; + return string.Format("to_char({0},{1}) ", parameter.MemberName, parameter2.MemberName); ; + } + public string SqlServer_DateDiff(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter2 = model.Args[1]; + var parameter3 = model.Args[2]; + return string.Format(" DATEDIFF({0},{1},{2}) ", parameter.MemberName, parameter2.MemberName, parameter3.MemberName); ; + } } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index 2d665c03d..e7ea8d386 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -68,5 +68,9 @@ namespace SqlSugar string CharIndex(MethodCallExpressionModel model); string BitwiseAnd(MethodCallExpressionModel model); string BitwiseInclusiveOR(MethodCallExpressionModel model); + + DateTime Oracle_ToDate(MethodCallExpressionModel model); + string Oracle_ToChar(MethodCallExpressionModel model); + int SqlServer_DateDiff(MethodCallExpressionModel model); } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs index bab22ce28..d79102cb5 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -140,5 +140,8 @@ namespace SqlSugar public static int CharIndex(string findChar,string searchValue) { throw new NotSupportedException("Can only be used in expressions"); } public static int BitwiseAnd(int left, int right) { throw new NotSupportedException("Can only be used in expressions"); } public static int BitwiseInclusiveOR(int left, int right) { throw new NotSupportedException("Can only be used in expressions"); } + public static DateTime Oracle_ToDate(object date,string format) { throw new NotSupportedException("Can only be used in expressions"); } + public static string Oracle_ToChar(object date, string format) { throw new NotSupportedException("Can only be used in expressions"); } + public static int SqlServer_DateDiff(string dateType,DateTime date1,DateTime date2) { throw new NotSupportedException("Can only be used in expressions"); } } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index fe47c16fc..5eb9e5e81 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -680,6 +680,12 @@ namespace SqlSugar return this.Context.DbMehtods.BitwiseInclusiveOR(model); case "ToDateShort": return this.Context.DbMehtods.ToDateShort(model); + case "Oracle_ToChar": + return this.Context.DbMehtods.Oracle_ToChar(model); + case "Oracle_ToDate": + return this.Context.DbMehtods.Oracle_ToDate(model); + case "SqlServer_DateDiff": + return this.Context.DbMehtods.SqlServer_DateDiff(model); default: break; }