1 utility.inc views_date_sql_extract($extract_type, $field, $field_type = 'int', $set_offset = NULL)

Helper function to create cross-database SQL date extraction.

Parameters

$extract_type: The type of value to extract from the date, like 'MONTH'.

$field: The real table and field name, like 'tablename.fieldname'.

$field_type: The type of date field, 'int' or 'datetime'.

$set_offset: The name of a field that holds the timezone offset or a fixed timezone offset value. If not provided, the normal Backdrop timezone handling will be used, i.e. $set_offset = 0 will make no timezone adjustment.

Return value

An appropriate SQL string for the db type and field type.:

File

core/modules/views/includes/utility.inc, line 418
Utility functions for assembling Views queries.

Code

function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set_offset = NULL) {
  $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.
      return "WEEK($field, 3)";
    case ('DOW'):
      // MySQL returns 1 for Sunday through 7 for Saturday.
      // PHP date functions use 0 for Sunday and 6 for Saturday.
      return "INTEGER(DAYOFWEEK($field) - 1)";
    case ('DOY'):
      return "DAYOFYEAR($field)";
  }
}