private function between($column, $a, $b, $prefix, $not = false, $operator = null, $filter = false)
    {
        if (!$this->isFilterable($filter, array($a, $b))) {
            return $this;
        }

        if ($operator !== null) {
            // A space before the operator is preferred
            $operator = sprintf(' %s', $operator);
        }

        // Handle NOT prefix
        if ($not === true) {
            $not = 'NOT';
        } else {
            $not = '';
        }

        $this->append($operator.sprintf(' %s %s %s BETWEEN %s AND %s ', $prefix, $this->quote($column), $not, $a, $b));
        return $this;
    }