예제 #1
0
        /// <summary>
        /// <para>DATENAME built-in function.</para>
        /// <para>Returns a character string that represents the specified datepart of the specified date.</para>
        /// </summary>
        /// <param name="datePart">Is the part of the date to return.</param>
        /// <param name="date">Is an expression that can be resolved to a time, date, smalldatetime, datetime, datetime2, or datetimeoffset value. date can be an expression, column expression, user-defined variable, or string literal.</param>
        public static SysFn Datename(Designer.PartOfDate datePart, ScalarArgument date)
        {
            date = date ?? Designer.Null;

            return(new SysFn((buildContext, buildArgs) =>
            {
                var sql = String.Format(
                    "DATENAME({0},{1})",
                    datePart.ToUpperCase(),
                    date.Build(buildContext, buildArgs));
                buildContext.TryTakeException(date.Exception, "Sys.Datename");
                return sql;
            }));
        }
예제 #2
0
        /// <summary>
        /// <para>DATEDIFF built-in function.</para>
        /// <para>Returns an integer that represents the specified datepart of the specified date.</para>
        /// </summary>
        /// <param name="datePart">Is the part of date (a date or time value) for which an integer will be returned.</param>
        /// <param name="startDate">Is an expression that can be resolved to a time, date, smalldatetime, datetime, datetime2, or datetimeoffset value. date can be an expression, column expression, user-defined variable or string literal.</param>
        /// <param name="endDate">Is an expression that can be resolved to a time, date, smalldatetime, datetime, datetime2, or datetimeoffset value. date can be an expression, column expression, user-defined variable or string literal.</param>
        public static SysFn Datediff(Designer.PartOfDate datePart, ScalarArgument startDate, ScalarArgument endDate)
        {
            startDate = startDate ?? Designer.Null;
            endDate   = endDate ?? Designer.Null;

            return(new SysFn((buildContext, buildArgs) =>
            {
                var sql = String.Format(
                    "DATEDIFF({0},{1},{2})",
                    datePart.ToUpperCase(),
                    startDate.Build(buildContext, buildArgs),
                    endDate.Build(buildContext, buildArgs));
                buildContext.TryTakeException(startDate.Exception, "Sys.Datediff");
                buildContext.TryTakeException(endDate.Exception, "Sys.Datediff");
                return sql;
            }));
        }
예제 #3
0
        /// <summary>
        /// <para>DATEADD built-in function.</para>
        /// <para>Returns a specified date with the specified number interval (signed integer) added to a specified datepart of that date.</para>
        /// </summary>
        /// <param name="datePart">Is the part of date to which an integer number is added. </param>
        /// <param name="number">Is an expression that can be resolved to an int that is added to a datepart of date. User-defined variables are valid.</param>
        /// <param name="date">Is an expression that can be resolved to a time, date, smalldatetime, datetime, datetime2, or datetimeoffset value. date can be an expression, column expression, user-defined variable, or string literal. If the expression is a string literal, it must resolve to a datetime.</param>
        public static SysFn Dateadd(Designer.PartOfDate datePart, ScalarArgument number, ScalarArgument date)
        {
            number = number ?? Designer.Null;
            date   = date ?? Designer.Null;

            return(new SysFn((buildContext, buildArgs) =>
            {
                var sql = String.Format(
                    "DATEADD({0},{1},{2})",
                    datePart.ToUpperCase(),
                    number.Build(buildContext, buildArgs),
                    date.Build(buildContext, buildArgs));
                buildContext.TryTakeException(number.Exception, "Sys.Dateadd");
                buildContext.TryTakeException(date.Exception, "Sys.Dateadd");
                return sql;
            }));
        }
예제 #4
0
 internal static string ToUpperCase(this Designer.PartOfDate partOfDate)
 {
     return(partOfDate.ToString().ToUpper());
 }