diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Oscar/SqlBuilder/OscarExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Oscar/SqlBuilder/OscarExpressionContext.cs index d4514c5e6..65aa83c5b 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Oscar/SqlBuilder/OscarExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Oscar/SqlBuilder/OscarExpressionContext.cs @@ -119,36 +119,14 @@ namespace SqlSugar { var parameter = model.Args[0]; var parameter2 = model.Args[1]; - var format = "dd"; - if (parameter2.MemberValue.ObjToString() == DateType.Year.ToString()) + if (parameter.MemberName != null && parameter.MemberName is DateTime) { - format = "yyyy"; + return string.Format(" datepart({0},'{1}') ", parameter2.MemberValue, parameter.MemberName); } - if (parameter2.MemberValue.ObjToString() == DateType.Month.ToString()) + else { - format = "MM"; + return string.Format(" datepart({0},{1}) ", parameter2.MemberValue, parameter.MemberName); } - if (parameter2.MemberValue.ObjToString() == DateType.Day.ToString()) - { - format = "dd"; - } - if (parameter2.MemberValue.ObjToString() == DateType.Hour.ToString()) - { - format = "hh"; - } - if (parameter2.MemberValue.ObjToString() == DateType.Minute.ToString()) - { - format = "mm"; - } - if (parameter2.MemberValue.ObjToString() == DateType.Second.ToString()) - { - format = "ss"; - } - if (parameter2.MemberValue.ObjToString() == DateType.Millisecond.ToString()) - { - format = "ss"; - } - return string.Format(" cast( to_char({1},'{0}')as integer ) ", format, parameter.MemberName); } public override string Contains(MethodCallExpressionModel model) @@ -191,21 +169,7 @@ namespace SqlSugar { var parameter = model.Args[0]; return string.Format(" CAST({0} AS timestamp)", parameter.MemberName); - } - public override string DateAddByType(MethodCallExpressionModel model) - { - var parameter = model.Args[0]; - var parameter2 = model.Args[1]; - var parameter3 = model.Args[2]; - return string.Format(" ({1} + ({2}||'{0}')::INTERVAL) ", parameter3.MemberValue, parameter.MemberName, parameter2.MemberName); - } - - public override string DateAddDay(MethodCallExpressionModel model) - { - var parameter = model.Args[0]; - var parameter2 = model.Args[1]; - return string.Format(" ({0} + ({1}||'day')::INTERVAL) ", parameter.MemberName, parameter2.MemberName); - } + } public override string ToInt32(MethodCallExpressionModel model) { @@ -222,7 +186,7 @@ namespace SqlSugar public override string ToString(MethodCallExpressionModel model) { var parameter = model.Args[0]; - return string.Format(" CAST({0} AS VARCHAR)", parameter.MemberName); + return string.Format(" CAST({0} AS VARCHAR(1024))", parameter.MemberName); } public override string ToGuid(MethodCallExpressionModel model) @@ -277,5 +241,12 @@ namespace SqlSugar { return "( " + fieldName + "=true )"; } + public override string 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.MemberValue?.ToString().ToSqlFilter(), parameter2.MemberName, parameter3.MemberName); + } } }