diff --git a/date_views/includes/date_views_fields.inc b/date_views/includes/date_views_fields.inc
index a002b08..baf2a3f 100644
--- a/date_views/includes/date_views_fields.inc
+++ b/date_views/includes/date_views_fields.inc
@@ -70,8 +70,16 @@ function _date_views_fields($base = 'node') {
     $custom = array();
     if (isset($handler->definition['field_name'])) {
       $field = field_info_field($handler->definition['field_name']);
+      $field_type='';
+      if(isset($field['type'])){
+        $field_type=$field['type'];
+      }
+      // If the field is custom, verify the field's type declaration within the handler.
+      elseif(isset($handler->definition['type'])){
+        $field_type=$handler->definition['type'];
+      }
       $is_field = TRUE;
-      switch ($field['type']) {
+      switch ($field_type) {
        case 'date':
           $sql_type = DATE_ISO;
           break;
@@ -89,14 +97,33 @@ function _date_views_fields($base = 'node') {
       $db_info = date_api_database_info($field, $revision);
       $name = $table_name . "." . $field_name;
       $granularity = !empty($field['granularity']) ? $field['granularity'] : array('year', 'month', 'day', 'hour', 'minute', 'second');
+      
+      // If the field is custom, use it's alias instead of an actual database record.
+      if(!empty($db_info['columns'][$table_name]['value'])){
+        $fromto = array(
+          $table_name . '.' . $db_info['columns'][$table_name]['value'],
+          $table_name . '.' . (!empty($field['settings']['todate']) ? $db_info['columns'][$table_name]['value2'] : $db_info['columns'][$table_name]['value']),
+        );
+      }
+      else{
+        $fromto = array(
+          $name,
+          $name,
+        );
+      }
 
-      $fromto = array(
-        $table_name . '.' . $db_info['columns'][$table_name]['value'],
-        $table_name . '.' . (!empty($field['settings']['todate']) ? $db_info['columns'][$table_name]['value2'] : $db_info['columns'][$table_name]['value']),
-      );
-
-      if (isset($field['settings']['tz_handling'])) {
-        $tz_handling = $field['settings']['tz_handling'];
+      $tz_test=false;
+      if(isset($field['settings']['tz_handling'])){
+        $tz_handling=$field['settings']['tz_handling'];
+        $tz_test=true;
+      }
+      // If the field is custom, verify the field's timezone handling declaration within the handler.
+      elseif(isset($handler->definition['tz_handling'])){
+        $tz_handling=$handler->definition['tz_handling'];
+        $tz_test=true;
+      }
+      
+      if ($tz_test) {
         $db_info = date_api_database_info($field, $revision);
         if ($tz_handling == 'date') {
           $offset_field = $table_name . '.' . $db_info['columns'][$table_name]['offset'];
