private static DateTime GetDateToValue(DateTime?dateTo, DateRangeAdjustment rangeAdjustment) { var value = dateTo.GetValueOrDefault(); return(rangeAdjustment == DateRangeAdjustment.Inclusive ? new DateTime(value.Year, value.Month, value.Day, 23, 59, 59, 999, value.Kind) : value); }
public static Sql FilterByDateRange(this Sql sql, string columnName, IDateRangeFilter filter, DateRangeAdjustment rangeAdjustment = DateRangeAdjustment.None) { if (filter == null) { return(sql); } if (filter.DateFrom.HasValue && filter.DateTo.HasValue) { return(sql.Where($"{columnName} BETWEEN @0 AND @1", GetDateFromValue(filter.DateFrom, rangeAdjustment), GetDateToValue(filter.DateTo, rangeAdjustment))); } if (filter.DateFrom.HasValue) { sql = sql.Where($"{columnName} >= @0", GetDateFromValue(filter.DateFrom, rangeAdjustment)); } if (filter.DateTo.HasValue) { sql = sql.Where($"{columnName} <= @0", GetDateToValue(filter.DateTo, rangeAdjustment)); } return(sql); }