Index: views.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/views.module,v
retrieving revision 1.166.2.43
diff -u -r1.166.2.43 views.module
--- views.module	14 Jul 2007 18:54:16 -0000	1.166.2.43
+++ views.module	15 Oct 2007 18:42:59 -0000
@@ -1798,7 +1798,7 @@
  * A list of greater / equal / less than
  */
 function views_handler_operator_gtlt() {
-  return array('>' => t("Is Greater Than"), '>=' => t("Is Greater Than Or Equals"), '=' => t("Is Equal To"), '!=' => t("Is Not Equal To"), '<=' => t("Is Less Than Or Equals"), '<' => t("Is Less Than"));
+  return array('>' => t("Is Greater Than"), '>=' => t("Is Greater Than Or Equals"), '=' => t("Is Equal To"), '!=' => t("Is Not Equal To"), '<=' => t("Is Less Than Or Equals"), '<' => t("Is Less Than"), '~' => t("Within range"), '~=' => t("Within range (inclusive)"), '!~' => t("Outside range"), '!~=' => t("Outside range (inclusive)"));
 }
 
 /**
Index: views_query.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/Attic/views_query.inc,v
retrieving revision 1.51.2.11
diff -u -r1.51.2.11 views_query.inc
--- views_query.inc	12 Apr 2007 15:18:59 -0000	1.51.2.11
+++ views_query.inc	16 Oct 2007 15:08:46 -0000
@@ -167,7 +167,23 @@
   }
   else {
     $query->ensure_table("$table");
-    $query->add_where("%s.%s %s '%s'", $query->use_alias_prefix . $table, $field, $filter['operator'], $filter['value']);
+    $value_range = explode('~', $filter['value']); // lower-bound = [0], upper-bound = [1].
+    switch ($filter['operator']) {
+      case '~' : // Within range
+        $query->add_where("(%s.%s > '%s') AND (%s.%s < '%s')", $query->use_alias_prefix . $table, $field, $value_range[0], $query->use_alias_prefix . $table, $field, $value_range[1]);
+        break;
+      case '~=' : // Within range (inclusive of bound values)
+        $query->add_where("(%s.%s >= '%s') AND (%s.%s <= '%s')", $query->use_alias_prefix . $table, $field, $value_range[0], $query->use_alias_prefix . $table, $field, $value_range[1]);
+        break;
+      case '!~' : // Outside range
+        $query->add_where("((%s.%s < '%s') OR (%s.%s > '%s'))", $query->use_alias_prefix . $table, $field, $value_range[0], $query->use_alias_prefix . $table, $field, $value_range[1]);
+        break;
+      case '!~=' : // Outside range (inclusive of bound values)
+        $query->add_where("((%s.%s <= '%s') OR (%s.%s >= '%s'))", $query->use_alias_prefix . $table, $field, $value_range[0], $query->use_alias_prefix . $table, $field, $value_range[1]);
+        break;
+      default : // The normal in/equality operators
+        $query->add_where("%s.%s %s '%s'", $query->use_alias_prefix . $table, $field, $filter['operator'], $filter['value']);
+    }
   }
 }
 
