/// <summary> /// 转换 DATEDIFF 表达式 /// </summary> /// <param name="expression">表达式</param> private void convertDateDiff(MethodCallExpression expression) { System.Collections.ObjectModel.ReadOnlyCollection <System.Linq.Expressions.Expression> arguments = expression.Arguments; SqlStream.SimpleWrite("datediff("); whereExpression.Convert(arguments[0]); if (whereExpression.Type == WhereExpression.ConvertType.ConvertExpression) { ExpressionCallDateDiffType type = (ExpressionCallDateDiffType)whereExpression.Expression.GetConstantValue(); if (type != ExpressionCallDateDiffType.NONE) { SqlStream.Write(type.ToString()); SqlStream.Write(','); } } else { throw new InvalidCastException("未知函数表达式参数值类型 " + expression.Method.Name + " " + whereExpression.Expression.NodeType.ToString()); } convert(arguments[1]); SqlStream.Write(','); convert(arguments[2]); SqlStream.Write(')'); }
/// <summary> /// 计算时间差 /// </summary> /// <param name="DateDiffType"></param> /// <param name="StartTime"></param> /// <param name="EndTime"></param> /// <returns></returns> public static int DateDiff(ExpressionCallDateDiffType DateDiffType, DateTime StartTime, DateTime EndTime) { return(0); }