/// <summary>
        /// Adds a range condition to the given query's where clause.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="fieldName"></param>
        /// <param name="begin"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public static IDbQueryWhereClause FieldBetween <T>(this IDbQueryWhereClause query, string fieldName, DbDate <T> begin, DbDate <T> end) where T : struct
        {
            query.FieldMatch(fieldName, SqlOperator.GreaterThanOrEqual, begin).FieldMatch(fieldName, SqlOperator.LessThanOrEqual, end);

            return(query);
        }
        /// <summary>
        /// Adds a condition to the given query's where clause using the given values.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="fieldName"></param>
        /// <param name="operator"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        public static IDbQueryWhereClause FieldMatch <T>(this IDbQueryWhereClause query, string fieldName, SqlOperator @operator, DbDate <T> date) where T : struct
        {
            query.AddFilter(new Csg.Data.Sql.SqlCompareFilter(query.Root, fieldName, @operator, date.GetDbType(), date.Value));

            return(query);
        }