コード例 #1
0
        /// <summary>
        /// Returns the SqlServer compliant sql fragment for performing Date Arithametic.
        /// Depending on the parameters, the function will add (Days, Hours, ... , milliseconds)
        /// </summary>
        /// <param name="dateDiffInterval">Enumeration of the possible intervals (Days, Hours, Minutes.. MilliSeconds)</param>
        /// <param name="duration">If duration is a string, it will be parameterized; otherwise it will be a constant</param>
        /// <param name="startDate">If startDate is a string, it will be assumed to be a column name;
        /// if it is a dateEnumeration, then it can be either UTC, Local or default.</param>
        /// <returns>A code fragment which will perform the appropriate date add operation.</returns>
        public override string FormatDateMathSql(EnumDateDiffInterval dateDiffInterval
                                                 , object duration
                                                 , object startDate)
        {
            // is the startDate one of the default parameters
            string startDateParam = GetDbTimeAs(EnumDateTimeLocale.Default, null);

            if (startDate is EnumDateTimeLocale)
            {
                startDateParam = GetDbTimeAs((EnumDateTimeLocale)startDate, null);
            }
            if (startDate is string)    // columnName
            {
                startDateParam = startDate.ToString();
            }

            // determine if the Duration parameter should be a bind variable
            // or is a constant
            object durationParam = 0;    // default is 0 duration.

            if (duration is string &&
                !string.IsNullOrEmpty(duration.ToString()))
            {
                BuildBindVariableName(duration.ToString());
            }

            durationParam = duration;
            return(string.Format("DateAdd({0}, {1}, {2})", dateDiffInterval.ToString(), durationParam, startDateParam));
        }
コード例 #2
0
        /// <summary>
        /// Returns the Db2 compliant sql fragment for performing Date Arithametic.
        /// Depending on the parameters, the function will add (Days, Hours, ... , milliseconds)
        /// NOTE: DB2 does not support milliseconds; instead it supports microseconds.  So the value
        /// provided for milliseconds will be multiplied by 100 and defined as microseconds.
        /// </summary>
        /// <param name="dateDiffInterval">Enumeration of the possible intervals (Days, Hours, Minutes.. MilliSeconds)</param>
        /// <param name="duration">If duration is a string, it will be parameterized; otherwise it will be a constant</param>
        /// <param name="startDate">If startDate is a string, it will be assumed to be a column name;
        /// if it is a dateEnumeration, then it can be either UTC, Local or default.</param>
        /// <returns>A code fragment which will perform the appropriate date add operation.</returns>
        public override string FormatDateMathSql(EnumDateDiffInterval dateDiffInterval
                                                 , object duration
                                                 , object startDate)
        {
            // is the startDate one of the default parameters
            string startDateParam = GetDbTimeAs(EnumDateTimeLocale.Default, null);

            if (startDate is EnumDateTimeLocale)
            {
                startDateParam = GetDbTimeAs((EnumDateTimeLocale)startDate, null);
            }
            if (startDate is string)    // columnName
            {
                startDateParam = startDate.ToString();
            }

            // determine if the Duration parameter should be a bind variable
            // or is a constant
            object durationParam = 0;    // default is 0 duration.

            if (duration is string &&
                !string.IsNullOrEmpty(duration.ToString()))
            {
                BuildBindVariableName(duration.ToString());
            }
            durationParam = duration;
            // db2 does not have milliseconds, substitute milliseconds with Microseconds
            return(string.Format("{0} + {1} {2}", startDateParam
                                 , dateDiffInterval == EnumDateDiffInterval.MilliSecond ? string.Format("(100 * {0})", durationParam) : durationParam
                                 , dateDiffInterval == EnumDateDiffInterval.MilliSecond ? "Microsecond" : dateDiffInterval.ToString()));
        }