diff --git a/date_views/date_views.info b/date_views/date_views.info
index 21b9be03..d99105c4 100644
--- a/date_views/date_views.info
+++ b/date_views/date_views.info
@@ -11,3 +11,4 @@ files[] = includes/date_views_filter_handler.inc
 files[] = includes/date_views_filter_handler_simple.inc
 files[] = includes/date_views.views.inc
 files[] = includes/date_views_plugin_pager.inc
+files[] = includes/date_views_sort_handler_simple.inc
diff --git a/date_views/date_views.module b/date_views/date_views.module
index cbb100d5..4395f11a 100644
--- a/date_views/date_views.module
+++ b/date_views/date_views.module
@@ -396,6 +396,8 @@ function date_views_field_views_data_alter(&$result, $field, $module) {
           $replace_label = $has_end_date;
         }
         if (array_key_exists('sort', $value)) {
+          $result[$table][$column]['sort']['handler'] = 'date_views_sort_handler_simple';
+          $result[$table][$column]['sort']['empty field name'] = t('Undated');
           $result[$table][$column]['sort']['is date'] = TRUE;
           $replace_label = $has_end_date;
         }
diff --git a/date_views/includes/date_views_sort_handler_simple.inc b/date_views/includes/date_views_sort_handler_simple.inc
new file mode 100644
index 00000000..ee816fe7
--- /dev/null
+++ b/date_views/includes/date_views_sort_handler_simple.inc
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @file
+ * Views sort for a single date field, using Date API form selectors and SQL.
+ */
+
+/**
+ * Views sort for a single date field, using Date API form selectors and SQL.
+ */
+class date_views_sort_handler_simple extends views_handler_sort_date {
+
+  /**
+   * Called to add the sort to a query.
+   */
+  function query() {
+    $this->ensure_my_table();
+    $field = field_info_field($this->definition['field_name']);
+  
+    // Initialize date sql handler to help generate the correct database and
+    // fieldtype query strings.
+    $date_handler = new date_sql_handler($field['type'], date_default_timezone());
+
+    // Set timezones to ensure correct handling
+    $date_handler->db_timezone = date_get_timezone_db($field['settings']['tz_handling']);
+    $date_handler->local_timezone = date_get_timezone($field['settings']['tz_handling']);
+
+    // Get formating based on granularity.
+    $format = $date_handler->views_formats($this->options['granularity'], 'sql');
+
+    // Create field string.
+    $formula = $date_handler->sql_format($format,$date_handler->sql_field("$this->table_alias.$this->real_field"));
+  
+    // Order by newly created field string
+    $this->query->add_orderby(NULL, $formula, $this->options['order'], $this->table_alias . '_' . $this->field . '_' . $this->options['granularity']);
+  }
+
+}
