Example #1
0
        /// <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(')');
        }
Example #2
0
 /// <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);
 }