Represents calling a built in date/time function in the target DBMS.
Inheritance: DbFunctionExpression
        /// <summary>
        /// Translates the <paramref name="dateTimeFunctionExpression"/> into a string representation.
        /// </summary>
        /// <param name="dateTimeFunctionExpression">The <see cref="DbDateTimeFunctionExpression"/> to translate.</param>
        /// <returns><see cref="DbExpression"/></returns>
        protected virtual DbExpression VisitDateTimeFunctionExpression(DbDateTimeFunctionExpression dateTimeFunctionExpression)
        {
            var arguments = VisitListExpression(dateTimeFunctionExpression.Arguments);

            if (!ReferenceEquals(arguments, dateTimeFunctionExpression.Arguments))
            {
                return(ExpressionFactory.MakeDateTimeFunction(dateTimeFunctionExpression.DateTimeFunctionExpressionType,
                                                              arguments.ToArray()));
            }

            return(dateTimeFunctionExpression);
        }
        /// <summary>
        /// Translates the <paramref name="dateTimeFunctionExpression"/> into a string representation.
        /// </summary>
        /// <param name="dateTimeFunctionExpression">The <see cref="DbDateTimeFunctionExpression"/> to translate.</param>
        /// <returns><see cref="string"/></returns>
        protected override DbExpression VisitDateTimeFunctionExpression(DbDateTimeFunctionExpression dateTimeFunctionExpression)
        {
            string body = GetDateTimeFunctionBody(dateTimeFunctionExpression.DateTimeFunctionExpressionType);

            switch (dateTimeFunctionExpression.DateTimeFunctionExpressionType)
            {
            case DbDateTimeFunctionExpressionType.AddYears:
            case DbDateTimeFunctionExpressionType.AddMonths:
            case DbDateTimeFunctionExpressionType.AddDays:
            case DbDateTimeFunctionExpressionType.AddHours:
            case DbDateTimeFunctionExpressionType.AddMinutes:
            case DbDateTimeFunctionExpressionType.AddSeconds:
            case DbDateTimeFunctionExpressionType.AddMilliseconds:
                return(CreateDefaultFunctionSyntax(body, dateTimeFunctionExpression.Arguments.Reverse()));

            default:
                return(CreateDefaultFunctionSyntax(body, dateTimeFunctionExpression.Arguments));
            }
        }
 /// <summary>
 /// Creates a new <see cref="DbDateTimeFunctionExpression"/>.
 /// </summary>
 /// <param name="dateTimeFunctionExpressionType">The <see cref="DbDateTimeFunctionExpressionType"/> that specifies the type of <see cref="DbDateTimeFunctionExpression"/> to create.</param>
 /// <param name="arguments">A list of <see cref="DbExpression"/> instances that is used as arguments when calling the function.</param>
 /// <returns>A <see cref="DbDateTimeFunctionExpression"/> instance.</returns>
 public DbDateTimeFunctionExpression MakeDateTimeFunction(DbDateTimeFunctionExpressionType dateTimeFunctionExpressionType, DbExpression[] arguments)
 {
     var dateTimeFunctionExpression = new DbDateTimeFunctionExpression(dateTimeFunctionExpressionType, arguments);
     return dateTimeFunctionExpression;
 }
 /// <summary>
 /// Translates the <paramref name="dateTimeFunctionExpression"/> into a string representation.
 /// </summary>
 /// <param name="dateTimeFunctionExpression">The <see cref="DbDateTimeFunctionExpression"/> to translate.</param>
 /// <returns><see cref="string"/></returns>
 protected override DbExpression VisitDateTimeFunctionExpression(DbDateTimeFunctionExpression dateTimeFunctionExpression)
 {
     string body = GetDateTimeFunctionBody(dateTimeFunctionExpression.DateTimeFunctionExpressionType);
     switch (dateTimeFunctionExpression.DateTimeFunctionExpressionType)
     {
         case DbDateTimeFunctionExpressionType.AddYears:
         case DbDateTimeFunctionExpressionType.AddMonths:
         case DbDateTimeFunctionExpressionType.AddDays:
         case DbDateTimeFunctionExpressionType.AddHours:
         case DbDateTimeFunctionExpressionType.AddMinutes:
         case DbDateTimeFunctionExpressionType.AddSeconds:
         case DbDateTimeFunctionExpressionType.AddMilliseconds:
             return CreateDefaultDateTimeFunctionSyntax(body, dateTimeFunctionExpression.Arguments);
         default:
             return CreateDefaultDateTimeFunctionSyntax(body, dateTimeFunctionExpression.Arguments);
     }
 }
        /// <summary>
        /// Translates the <paramref name="dateTimeFunctionExpression"/> into a string representation.
        /// </summary>
        /// <param name="dateTimeFunctionExpression">The <see cref="DbDateTimeFunctionExpression"/> to translate.</param>
        /// <returns><see cref="DbExpression"/></returns>
        protected virtual DbExpression VisitDateTimeFunctionExpression(DbDateTimeFunctionExpression dateTimeFunctionExpression)
        {
            var arguments = VisitListExpression(dateTimeFunctionExpression.Arguments);
            if (!ReferenceEquals(arguments, dateTimeFunctionExpression.Arguments))
                return ExpressionFactory.MakeDateTimeFunction(dateTimeFunctionExpression.DateTimeFunctionExpressionType,
                                                            arguments.ToArray());

            return dateTimeFunctionExpression;
        }