/// <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; })); }
/// <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; })); }
/// <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; })); }
internal static string ToUpperCase(this Designer.PartOfDate partOfDate) { return(partOfDate.ToString().ToUpper()); }