diff --git a/sites/all/modules/patched/apachesolr_views/apachesolr_views.info b/sites/all/modules/patched/apachesolr_views/apachesolr_views.info
index 3d436c1..1d33311 100644
--- a/sites/all/modules/patched/apachesolr_views/apachesolr_views.info
+++ b/sites/all/modules/patched/apachesolr_views/apachesolr_views.info
@@ -3,6 +3,7 @@ name = Apache Solr Views Integration
 description = Provides Views Integration with Views
 dependencies[] = apachesolr
 dependencies[] = views
+dependencies[] = date_api
 package = Apache Solr
 core = "6.x"
 php = 5.1.4
diff --git a/sites/all/modules/patched/apachesolr_views/apachesolr_views.views.inc b/sites/all/modules/patched/apachesolr_views/apachesolr_views.views.inc
index a015099..569edd2 100644
--- a/sites/all/modules/patched/apachesolr_views/apachesolr_views.views.inc
+++ b/sites/all/modules/patched/apachesolr_views/apachesolr_views.views.inc
@@ -23,6 +23,9 @@ function apachesolr_views_views_handlers() {
       'apachesolr_views_handler_argument' => array(
         'parent' => 'views_handler_argument',
       ),
+      'apachesolr_views_handler_argument_date' => array(
+        'parent' => 'apachesolr_views_handler_argument',
+      ),
       'apachesolr_views_handler_argument_mlt' => array(
         'parent' => 'views_handler_argument_numeric',
       ),
@@ -151,6 +154,9 @@ function apachesolr_views_views_data() {
   $data['apachesolr']['created'] = array(
     'title' => t('Creation date'),
     'help' => t('The date the node was created.'),
+    'argument' => array(
+      'handler' => 'apachesolr_views_handler_argument_date',
+    ),
     'field' => array(
       'handler' => 'views_handler_field_date',
       'click sortable' => TRUE,
@@ -162,6 +168,9 @@ function apachesolr_views_views_data() {
   $data['apachesolr']['changed'] = array(
     'title' => t('Updated date'),
     'help' => t('The date the node was last updated.'),
+    'argument' => array(
+      'handler' => 'apachesolr_views_handler_argument_date',
+    ),
     'field' => array(
       'handler' => 'views_handler_field_date',
       'click sortable' => TRUE,
diff --git a/sites/all/modules/patched/apachesolr_views/apachesolr_views_query.inc b/sites/all/modules/patched/apachesolr_views/apachesolr_views_query.inc
index a440065..a3657a8 100644
--- a/sites/all/modules/patched/apachesolr_views/apachesolr_views_query.inc
+++ b/sites/all/modules/patched/apachesolr_views/apachesolr_views_query.inc
@@ -40,6 +40,8 @@ class apachesolr_views_query extends views_plugin_query implements Drupal_Solr_Q
     'nid',
     'url',
     'uid', // TODO: skip this probably, but not for user searching...
+  	'created',
+  	'updated',
   );
   
   // the template to use on the solr
@@ -467,10 +469,17 @@ class apachesolr_views_query extends views_plugin_query implements Drupal_Solr_Q
    * @return none
    */
   public function add_filter($type, $value, $exclude = FALSE) {
-    $this->_facets[$type][] = array(
+    $filter = array(
       'value' => $value,
       'exclude' => $exclude,
     );
+    /* Check if its a date value */
+    $pattern = '/([\[\{](\S+) TO (\S+)[\]\}])/';
+    if (preg_match($pattern, $value, $matches)) {
+      $filter['start'] = $matches[2];
+      $filter['end'] = $matches[3];
+    }
+    $this->_facets[$type][] = $filter;
   }
   
   /**
@@ -601,17 +610,90 @@ class apachesolr_views_query extends views_plugin_query implements Drupal_Solr_Q
    * @return string the part of the url for Views that matches this facet value
    */
   protected function argument_part($field) {
-    $argument_path = '';
+    $argument_paths = array();
+    $has_date = FALSE;
     if (empty($this->_facets[$field])) {
       return '';
     }
-    foreach ($this->_facets[$field] as $defintion) {
-      if (!$defintion['exclude']) {
-        $argument_path .= ',' . $defintion['value'];
+    foreach ($this->_facets[$field] as $definition) {
+      if (!$definition['exclude']) {
+        $value = $definition['value'];
+        /* Check if its a date argument */
+        if (!empty($definition['start']) && !empty($definition['end'])) {
+          $has_date = TRUE;
+          $start = $definition['start'];
+          $end = $definition['end'];
+          $value = $this->format_date_argument($start, $end);
+        }
+        $argument_paths[] = $value;
+      }
       }
+    /* if there are multiple date arguments, merge where possible to keep urls tidy */
+    if ($has_date && count($argument_paths) > 1) {
+      $argument_paths  = $this->merge_date_arguments($argument_paths);
     }
+    return implode(',', $argument_paths);
+  }
+
+  /**
+   * to prevent untidy urls, merge multiple date arguments that share common elements e.g. 2009,2009-11,2009-11-25 would simply be 2009-11-25
+   *
+   * @param string $argument_paths
+   * Argument paths in an array
+   *
+   * @return array the argument paths with dates merged
+   */
+  protected function merge_date_arguments($argument_paths) {
+    $date_arguments = array();
+    $last_path = '';
     
-    return drupal_substr($argument_path, 1);
+    foreach (array_reverse($argument_paths) as $path) {
+      if (!empty($last_path) && strpos($last_path, $path) === 0) {
+        continue;
+      }
+      else {
+        $date_arguments[] = $path;
+      }
+      $last_path = $path;
+    }
+
+    if (empty($date_arguments)) {
+      return $argument_paths;
+    }
+    return array_reverse($date_arguments);
+  }
+
+  /**
+   * return the date argument in a format suitable for views
+   *
+   * @param string $start
+   * Start date in iso format
+   *
+   * @param string $end
+   * End date in iso fomat
+   *
+   * @return string the part of the url for Views that matches this facet value
+   */
+  protected function format_date_argument($start, $end) {
+    $gap = apachesolr_date_find_query_gap($start, $end);
+    $unix = strtotime($start);
+    if ($unix > 0) {
+      switch ($gap) {
+        case 'YEAR':
+          return gmdate('Y', $unix);
+        case 'MONTH':
+          return gmdate('Y-m', $unix);
+        case 'DAY':
+          return gmdate('Y-m-d', $unix);
+        case 'HOUR':
+          return gmdate('Y-m-d H', $unix);
+        case 'MINUTE':
+          return gmdate('Y-m-d H:i', $unix);
+        case 'SECOND':
+          return gmdate('Y-m-d H:i:s', $unix);
+      }
+    }
+    return $start;
   }
   
   /**
@@ -625,6 +707,8 @@ class apachesolr_views_query extends views_plugin_query implements Drupal_Solr_Q
       'tid',
       'type',
       'uid',
+      'created',
+      'changed',
     );
     // we use field instead of real_field
     // because we want these specific ones defined in
@@ -697,10 +781,15 @@ class apachesolr_views_query extends views_plugin_query implements Drupal_Solr_Q
     $filters = array();
     foreach ($this->_facets as $type => $fields) {
       foreach ($fields as $data) {
-        $filters[] = array(
+        $filter = array(
           '#name' => ($data['exclude']) ? "NOT $type" : $type, 
           '#value' => $data['value']
         );
+        if (!empty($data['start'])) {
+          $filter['#start'] = $data['start'];
+          $filter['#end'] = $data['end'];
+        }
+        $filters[] = $filter;
       }
     }
     
diff --git a/sites/all/modules/patched/apachesolr_views/handlers/apachesolr_views_handler_argument_date.inc b/sites/all/modules/patched/apachesolr_views/handlers/apachesolr_views_handler_argument_date.inc
new file mode 100644
index 0000000..e5320bb
--- /dev/null
+++ b/sites/all/modules/patched/apachesolr_views/handlers/apachesolr_views_handler_argument_date.inc
@@ -0,0 +1,96 @@
+<?php
+// $Id:
+
+class apachesolr_views_handler_argument_date extends apachesolr_views_handler_argument {
+  var $arg_format = 'Y-m-d';
+  
+  function construct() {
+    parent::construct();
+    /* dependency on the date_api module */
+    require_once('./'. drupal_get_path('module', 'date_api') .'/date_api_sql.inc');
+    $this->date_handler = new date_sql_handler();
+    $this->date_handler->construct();
+  }
+  
+  /**
+   * Override query() and do some fancy manipulation of the argument
+   * so that it is boiled down to the actual field value
+   * instead of the nice title
+   */
+  function query() {
+    $this->value = explode(',', $this->argument);
+    $arg_values = array();
+    
+    foreach ($this->value as $facet_value) {
+      $parsed_values = $this->parse_date_argument($facet_value);
+      if (!empty($parsed_values)) {
+        foreach($parsed_values as $parsed_value){
+          $this->query->add_filter($this->real_field, $parsed_value);
+        }
+      }
+    }
+  }
+  
+  function parse_date_argument($argument) {
+    $range = $this->date_handler->arg_range($argument);
+    $min_date = $range[0];
+    $max_date = $range[1];
+    /* Adjust date to match with apachesolr facets */
+    date_modify($max_date, '1 seconds');
+    $values = $this->get_parent_filters($min_date, $max_date);
+    
+    /* Add the actual date range specified in argument */
+    $values[] = $this->build_date_range($min_date, $max_date);
+    $this->min_date = $min_date;
+    $this->max_date = $max_date;
+
+    return $values;
+  }
+  
+  function get_parent_filters($from, $to) {
+    $values = array();
+    $gap = $this->find_date_gap($from, $to);
+    
+    if ($gap == 'YEAR') { return $values; }
+    $values[] = $this->build_date_range($from, '1 year', 'gap');
+    
+    if ($gap == 'MONTH') { return $values; }
+    $values[] = $this->build_date_range($from, '1 month', 'gap');
+    
+    if ($gap == 'DAY') { return $values; }
+    $values[] = $this->build_date_range($from, '1 day', 'gap');
+    
+    if ($gap == 'HOUR') { return $values; }
+    $values[] = $this->build_date_range($from, '1 hour', 'gap');
+    
+    if ($gap == 'SECOND') { return $values; }
+    $values[] = $this->build_date_range($from, '1 minute', 'gap');
+    
+    return $values;
+  }
+  
+  function find_date_gap($from, $to) {
+    $format = 'Y-m-d\TH:i:s\Z';
+    $start = date_format($from, $format);
+    $end = date_format($to, $format);
+    $gap = apachesolr_date_find_query_gap($start, $end);
+    return $gap;
+  }
+  
+  function build_date_range($from, $to, $type = 'max') {
+    $format = 'Y-m-d\TH:i:s\Z';
+    if ($type == 'gap') {
+      $range = $to;
+      $to = drupal_clone($from);
+      date_modify($to, $range);
+    }
+    $start = date_format($from, $format);
+    $end = date_format($to, $format);
+    return '[' . $start . ' TO ' . $end . ']';
+  }
+  
+  
+  function title() {
+   return $this->argument;
+  }
+}
