diff --git includes/handlers.inc includes/handlers.inc
index 2206680..49eb47d 100644
--- includes/handlers.inc
+++ includes/handlers.inc
@@ -986,31 +986,8 @@ function views_break_phrase($str, &$filter) {
  * Figure out what timezone we're in; needed for some date manipulations.
  */
 function views_get_timezone() {
-  global $user;
-  if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
-    $timezone = $user->timezone;
-  }
-  else {
-    $timezone = variable_get('date_default_timezone', 0);
-  }
-
-  // set up the database timezone
-  if (in_array($GLOBALS['db_type'], array('mysql', 'mysqli', 'pgsql'))) {
-    $offset = '+00:00';
-    static $already_set = false;
-    if (!$already_set) {
-      if ($GLOBALS['db_type'] == 'pgsql') {
-        db_query("SET TIME ZONE INTERVAL '$offset' HOUR TO MINUTE");
-      }
-      elseif ($GLOBALS['db_type'] == 'mysqli' || version_compare(mysql_get_server_info(), '4.1.3', '>=')) {
-        db_query("SET @@session.time_zone = '$offset'");
-      }
-
-      $already_set = true;
-    }
-  }
-
-  return $timezone;
+  $view = views_get_current_view();
+  return $view->query->views_get_timezone();
 }
 
 /**
@@ -1028,35 +1005,8 @@ function views_get_timezone() {
  *   An appropriate SQL string for the db type and field type.
  */
 function views_date_sql_field($field, $field_type = 'int', $set_offset = NULL) {
-  $db_type = $GLOBALS['db_type'];
-  $offset = $set_offset !== NULL ? $set_offset : views_get_timezone();
-  switch ($db_type) {
-    case 'mysql':
-    case 'mysqli':
-      switch ($field_type) {
-        case 'int':
-          $field = "FROM_UNIXTIME($field)";
-          break;
-        case 'datetime':
-          break;
-      }
-      if (!empty($offset)) {
-        $field = "($field + INTERVAL $offset SECOND)";
-      }
-      return $field;
-    case 'pgsql':
-      switch ($field_type) {
-        case 'int':
-          $field = "$field::ABSTIME";
-          break;
-        case 'datetime':
-          break;
-      }
-      if (!empty($offset)) {
-        $field = "($field + INTERVAL '$offset SECONDS')";
-      }
-      return $field;
-  }
+  $view = views_get_current_view();
+  return $view->query->views_date_sql_field($field, $field_type, $set_offset);
 }
 
 /**
@@ -1076,33 +1026,8 @@ function views_date_sql_field($field, $field_type = 'int', $set_offset = NULL) {
  *   An appropriate SQL string for the db type and field type.
  */
 function views_date_sql_format($format, $field, $field_type = 'int', $set_offset = NULL) {
-  $db_type = $GLOBALS['db_type'];
-  $field = views_date_sql_field($field, $field_type, $set_offset);
-  switch ($db_type) {
-    case 'mysql':
-    case 'mysqli':
-      $replace = array(
-        'Y' => '%Y',
-        'm' => '%m',
-        'd' => '%%d',
-        'H' => '%H',
-        'i' => '%i',
-        's' => '%s',
-        );
-      $format = strtr($format, $replace);
-      return "DATE_FORMAT($field, '$format')";
-    case 'pgsql':
-      $replace = array(
-        'Y' => 'YYYY',
-        'm' => 'MM',
-        'd' => 'DD',
-        'H' => 'HH24',
-        'i' => 'MI',
-        's' => 'SS',
-        );
-      $format = strtr($format, $replace);
-      return "TO_CHAR($field, '$format')";
-  }
+  $view = views_get_current_view();
+  return $view->query->views_date_sql_format($format, $field, $field_type, $set_offset);
 }
 
 /**
@@ -1122,54 +1047,8 @@ function views_date_sql_format($format, $field, $field_type = 'int', $set_offset
  *   An appropriate SQL string for the db type and field type.
  */
 function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set_offset = NULL) {
-  $db_type = $GLOBALS['db_type'];
-  $field = views_date_sql_field($field, $field_type, $set_offset);
-
-  // Note there is no space after FROM to avoid db_rewrite problems
-  // see http://drupal.org/node/79904.
-  switch ($extract_type) {
-  case('DATE'):
-    return $field;
-  case('YEAR'):
-    return "EXTRACT(YEAR FROM($field))";
-  case('MONTH'):
-    return "EXTRACT(MONTH FROM($field))";
-  case('DAY'):
-    return "EXTRACT(DAY FROM($field))";
-  case('HOUR'):
-    return "EXTRACT(HOUR FROM($field))";
-  case('MINUTE'):
-    return "EXTRACT(MINUTE FROM($field))";
-  case('SECOND'):
-    return "EXTRACT(SECOND FROM($field))";
-  case('WEEK'):  // ISO week number for date
-    switch ($db_type) {
-      case('mysql'):
-      case('mysqli'):
-        // WEEK using arg 3 in mysql should return the same value as postgres EXTRACT
-        return "WEEK($field, 3)";
-      case('pgsql'):
-        return "EXTRACT(WEEK FROM($field))";
-    }
-  case('DOW'):
-    switch ($db_type) {
-      case('mysql'):
-      case('mysqli'):
-        // mysql returns 1 for Sunday through 7 for Saturday
-        // php date functions and postgres use 0 for Sunday and 6 for Saturday
-        return "INTEGER(DAYOFWEEK($field) - 1)";
-      case('pgsql'):
-        return "EXTRACT(DOW FROM($field))";
-    }
-  case('DOY'):
-    switch ($db_type) {
-      case('mysql'):
-      case('mysqli'):
-        return "DAYOFYEAR($field)";
-      case('pgsql'):
-        return "EXTRACT(DOY FROM($field))";
-    }
-  }
+  $view = views_get_current_view();
+  return $view->query->views_date_sql_extract($extract_type, $field, $field_type, $set_offset);
 }
 
 /**
diff --git plugins/views_plugin_query_default.inc plugins/views_plugin_query_default.inc
index 0ec7cf7..4d570e3 100644
--- plugins/views_plugin_query_default.inc
+++ plugins/views_plugin_query_default.inc
@@ -1115,6 +1115,147 @@ class views_plugin_query_default extends views_plugin_query{
     $view->query->add_field(NULL, "'" . $view->name . ':' . $view->current_display . "'", 'view_name');
   }
 
+  function views_date_sql_field($field, $field_type = 'int', $set_offset = NULL) {
+    $db_type = $GLOBALS['db_type'];
+    $offset = $set_offset !== NULL ? $set_offset : views_get_timezone();
+    switch ($db_type) {
+      case 'mysql':
+      case 'mysqli':
+        switch ($field_type) {
+          case 'int':
+            $field = "FROM_UNIXTIME($field)";
+            break;
+          case 'datetime':
+            break;
+        }
+        if (!empty($offset)) {
+          $field = "($field + INTERVAL $offset SECOND)";
+        }
+        return $field;
+      case 'pgsql':
+        switch ($field_type) {
+          case 'int':
+            $field = "$field::ABSTIME";
+            break;
+          case 'datetime':
+            break;
+        }
+        if (!empty($offset)) {
+          $field = "($field + INTERVAL '$offset SECONDS')";
+        }
+        return $field;
+    }
+  }
+
+  function views_date_sql_format($format, $field, $field_type = 'int', $set_offset = NULL) {
+    $db_type = $GLOBALS['db_type'];
+    $field = views_date_sql_field($field, $field_type, $set_offset);
+    switch ($db_type) {
+      case 'mysql':
+      case 'mysqli':
+        $replace = array(
+          'Y' => '%Y',
+          'm' => '%m',
+          'd' => '%%d',
+          'H' => '%H',
+          'i' => '%i',
+          's' => '%s',
+          );
+        $format = strtr($format, $replace);
+        return "DATE_FORMAT($field, '$format')";
+      case 'pgsql':
+        $replace = array(
+          'Y' => 'YYYY',
+          'm' => 'MM',
+          'd' => 'DD',
+          'H' => 'HH24',
+          'i' => 'MI',
+          's' => 'SS',
+          );
+        $format = strtr($format, $replace);
+        return "TO_CHAR($field, '$format')";
+    }
+  }
+
+  function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set_offset = NULL) {
+    $db_type = $GLOBALS['db_type'];
+    $field = views_date_sql_field($field, $field_type, $set_offset);
+
+    // Note there is no space after FROM to avoid db_rewrite problems
+    // see http://drupal.org/node/79904.
+    switch ($extract_type) {
+    case('DATE'):
+      return $field;
+    case('YEAR'):
+      return "EXTRACT(YEAR FROM($field))";
+    case('MONTH'):
+      return "EXTRACT(MONTH FROM($field))";
+    case('DAY'):
+      return "EXTRACT(DAY FROM($field))";
+    case('HOUR'):
+      return "EXTRACT(HOUR FROM($field))";
+    case('MINUTE'):
+      return "EXTRACT(MINUTE FROM($field))";
+    case('SECOND'):
+      return "EXTRACT(SECOND FROM($field))";
+    case('WEEK'):  // ISO week number for date
+      switch ($db_type) {
+        case('mysql'):
+        case('mysqli'):
+          // WEEK using arg 3 in mysql should return the same value as postgres EXTRACT
+          return "WEEK($field, 3)";
+        case('pgsql'):
+          return "EXTRACT(WEEK FROM($field))";
+      }
+    case('DOW'):
+      switch ($db_type) {
+        case('mysql'):
+        case('mysqli'):
+          // mysql returns 1 for Sunday through 7 for Saturday
+          // php date functions and postgres use 0 for Sunday and 6 for Saturday
+          return "INTEGER(DAYOFWEEK($field) - 1)";
+        case('pgsql'):
+          return "EXTRACT(DOW FROM($field))";
+      }
+    case('DOY'):
+      switch ($db_type) {
+        case('mysql'):
+        case('mysqli'):
+          return "DAYOFYEAR($field)";
+        case('pgsql'):
+          return "EXTRACT(DOY FROM($field))";
+      }
+    }
+  }
+
+  function views_get_timezone() {
+    global $user;
+    if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
+      $timezone = $user->timezone;
+    }
+    else {
+      $timezone = variable_get('date_default_timezone', 0);
+    }
+
+    // set up the database timezone
+    if (in_array($GLOBALS['db_type'], array('mysql', 'mysqli', 'pgsql'))) {
+      $offset = '+00:00';
+      static $already_set = false;
+      if (!$already_set) {
+        if ($GLOBALS['db_type'] == 'pgsql') {
+          db_query("SET TIME ZONE INTERVAL '$offset' HOUR TO MINUTE");
+        }
+        elseif ($GLOBALS['db_type'] == 'mysqli' || version_compare(mysql_get_server_info(), '4.1.3', '>=')) {
+          db_query("SET @@session.time_zone = '$offset'");
+        }
+
+        $already_set = true;
+      }
+    }
+
+    return $timezone;
+  }
+
   function get_aggregation_info() {
     // @todo -- need a way to get database specific and customized aggregation
     // functions into here.
