=== added file 'handlers/views_groupby_handler_field_date.inc'
--- handlers/views_groupby_handler_field_date.inc	1970-01-01 00:00:00 +0000
+++ handlers/views_groupby_handler_field_date.inc	2010-09-17 03:28:52 +0000
@@ -0,0 +1,75 @@
+<?php
+// $Id: views_handler_field_date.inc,v 1.3 2009/06/02 18:20:18 merlinofchaos Exp $
+/**
+ * A handler to provide proper displays for dates.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_groupby_handler_field_date extends views_handler_field_date {
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['format_query'] = array('default' => '');
+    
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['query_format'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Aggregation format'),
+      '#description' => t('Add a format to this box if you want to use the field for aggregation. See <a href="http://us.php.net/manual/en/function.date.php" target="_blank">the PHP docs</a> for date formats.'),
+      '#default_value' => isset($this->options['query_format']) ? $this->options['query_format'] : '',
+    );
+  }
+
+  function render($values) {
+    $value = $values->{$this->field_alias};
+    $format = $this->options['date_format'];
+    if (in_array($format, array('custom', 'raw time ago', 'time ago', 'raw time span', 'time span'))) {
+      $custom_format = $this->options['custom_date_format'];
+    }
+    
+    if (!$value) {
+      return theme('views_nodate');
+    }
+    else {
+      if (!empty($this->options['query_format'])) {
+        $value = strtotime($value);
+      }
+      
+      $time_diff = time() - $value; // will be positive for a datetime in the past (ago), and negative for a datetime in the future (hence)
+      switch ($format) {
+        case 'raw time ago':
+          return format_interval($time_diff, is_numeric($custom_format) ? $custom_format : 2);
+        case 'time ago':
+          return t('%time ago', array('%time' => format_interval($time_diff, is_numeric($custom_format) ? $custom_format : 2)));
+        case 'raw time span':
+          return ($time_diff < 0 ? '-' : '') . format_interval(abs($time_diff), is_numeric($custom_format) ? $custom_format : 2);
+        case 'time span':
+          return t(($time_diff < 0 ? '%time hence' : '%time ago'), array('%time' => format_interval(abs($time_diff), is_numeric($custom_format) ? $custom_format : 2)));
+        case 'custom':
+          return format_date($value, $format, $custom_format);
+        default:
+          return format_date($value, $format);
+      }
+    }
+  }
+
+  /**
+   * Called to add the sort to a query.
+   */
+  function query() {
+    $this->ensure_my_table();
+    
+    if (!empty($this->options['query_format'])) {
+      $formula = views_date_sql_format($this->options['query_format'], "$this->table_alias.$this->real_field");
+      $this->field_alias = $this->query->add_field('', $formula, $this->real_field.'_fmt');
+    }
+    else {
+      $this->field_alias = $this->query->add_field($this->table_alias, $this->real_field);
+    }
+  }
+}

=== modified file 'views_groupby.module'
--- views_groupby.module	2010-09-17 00:37:28 +0000
+++ views_groupby.module	2010-09-17 03:24:38 +0000
@@ -12,3 +12,21 @@
   );
 }
 
+/**
+ * Implementations of hook_views_data_alter().
+ */
+function views_groupby_views_data_alter(&$data) {
+  // Replace all uses of views_handler_field_date with
+  // views_groupby_handler_field_date - sammys
+  foreach ($data as $key => $value) {
+    foreach ($value as $field_name => $field) {
+      if ($field_name == 'table') {
+        continue;
+      }
+      
+      if ($field['field']['handler'] == 'views_handler_field_date') {
+        $data[$key][$field_name]['field']['handler'] = 'views_groupby_handler_field_date';
+      }
+    }
+  }
+}

=== modified file 'views_groupby.views.inc'
--- views_groupby.views.inc	2010-09-17 00:37:28 +0000
+++ views_groupby.views.inc	2010-09-17 03:07:55 +0000
@@ -45,7 +45,10 @@
       // field
       'views_groupby_handler_field_groupfields' => array(
         'parent' => 'views_handler_field',
-      )
+      ),
+      'views_groupby_handler_field_date' => array(
+        'parent' => 'views_handler_field_date',
+      ),
     ),
   );
 }

