public function Sql::getDateField

Overrides \Drupal\views\Plugin\views\query\QueryPluginBase::getDateField().

Overrides QueryPluginBase::getDateField

File

drupal/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php, line 1675
Definition of Drupal\views\Plugin\views\query\Sql.

Class

Sql
@todo.

Namespace

Drupal\views\Plugin\views\query

Code

public function getDateField($field) {
  $db_type = Database::getConnection()
    ->databaseType();
  $offset = $this
    ->setupTimezone();
  if (isset($offset) && !is_numeric($offset)) {
    $dtz = new \DateTimeZone($offset);
    $dt = new \DateTime('now', $dtz);
    $offset_seconds = $dtz
      ->getOffset($dt);
  }
  switch ($db_type) {
    case 'mysql':
      $field = "DATE_ADD('19700101', INTERVAL {$field} SECOND)";
      if (!empty($offset)) {
        $field = "({$field} + INTERVAL {$offset_seconds} SECOND)";
      }
      break;
    case 'pgsql':
      $field = "TO_TIMESTAMP({$field})";
      if (!empty($offset)) {
        $field = "({$field} + INTERVAL '{$offset_seconds} SECONDS')";
      }
      break;
    case 'sqlite':
      if (!empty($offset)) {
        $field = "({$field} + '{$offset_seconds}')";
      }
      break;
  }
  return $field;
}