diff --git a/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs b/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs index ca1a060ae..7fee2e13e 100644 --- a/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs +++ b/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs @@ -363,9 +363,8 @@ namespace OrmTest.UnitTest expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((DATEADD(:MethodConst2,:MethodConst1,:MethodConst0)) = :Const3 )", new List() { - new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",11),new SugarParameter(":Const3",x2), - new SugarParameter(":MethodConst2",DateType.Millisecond) + base.Check(value, pars, "((\"DATETIME2\"+0.0416666666666667) = :Const2 )", new List() { + new SugarParameter(":Const2",x2) }, "DateAddByType error"); } private void DateAddDay() @@ -376,7 +375,7 @@ namespace OrmTest.UnitTest expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((DATEADD(day,:MethodConst1,:MethodConst0)) = :Const2 )", new List() { + base.Check(value, pars, "((:MethodConst0+1) = :Const2 )", new List() { new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",1),new SugarParameter(":Const2",x2) }, "DateAddDay error"); @@ -392,9 +391,9 @@ namespace OrmTest.UnitTest expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((DATEADD(:Const0,:MethodConst1,\"DATETIME2\")) = :Const2 )", new List() { - new SugarParameter(":Const0",DateType.Hour.ToString()),new SugarParameter(":MethodConst1",10) - ,new SugarParameter(":Const2",x2) + base.Check(value, pars, "((\"DATETIME2\"+0.0416666666666667) = :Const2 )", new List() { + new SugarParameter(":Const2",x2), + new SugarParameter(":MethodConst1",10) }, "DateAddDay2 error"); } @@ -406,9 +405,8 @@ namespace OrmTest.UnitTest expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((DATEADD(:Const0,:MethodConst2,:MethodConst1)) = :Const3 )", new List() { - new SugarParameter(":Const0",DateType.Hour.ToString()),new SugarParameter(":MethodConst2",1),new SugarParameter(":MethodConst1",x2) - ,new SugarParameter(":Const3",x2) + base.Check(value, pars, "((:MethodConst1+0.0416666666666667) = :Const3 )", new List() { + new SugarParameter(":MethodConst1",x2),new SugarParameter(":MethodConst2",1),new SugarParameter(":Const3",x2) }, "DateAddDay3 error"); } diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs index 06e9506fc..0fd257758 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs @@ -45,14 +45,39 @@ namespace SqlSugar var parameter = model.Args[0]; var parameter2 = model.Args[1]; var parameter3 = model.Args[2]; - return string.Format(" (DATEADD({2},{1},{0})) ", parameter.MemberName, parameter2.MemberName, parameter3.MemberValue); + var type = (DateType)Enum.Parse(typeof(DateType), parameter3.MemberValue.ObjToString(), false); + double time = 1; + switch (type) + { + case DateType.Year: + time = 1 * 365; + break; + case DateType.Month: + time = 1 *30; + break; + case DateType.Day: + break; + case DateType.Hour: + time = 1 / 24.0; + break; + case DateType.Second: + time = 1 / 24.0/60.0/60.0; + break; + case DateType.Minute: + time = 1 / 24.0/60.0; + break; + case DateType.Millisecond: + time = 1 / 24.0 / 60.0 / 60.0/1000; + break; + } + return string.Format("({0}+{1}) ", parameter.MemberName, time); } public override string DateAddDay(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; - return string.Format(" (DATEADD(day,{1},{0})) ", parameter.MemberName, parameter2.MemberName); + return string.Format("({0}+1) ", parameter.MemberName); } public override string ToString(MethodCallExpressionModel model)