How to add a join to hook_query_alter
Your query is a bit different compared to a regular query. A regular query is constructed like this (source):

$query = db_select('users', 'u');
$query-&gt;join('domain_editor', 'de', 'u.uid = de.uid');
$query-&gt;fields('u', array('name'))
  -&gt;condition('u.name', '%' . db_like('john') . '%', 'LIKE')
  -&gt;condition('de.domain_id', 25, '=')
  -&gt;range(0, 20);
$result = $query-&gt;execute();


You have the base query:

$query = db_select('users', 'u');
$query = db_select($table, $alias);


Then the join:

$query-&gt;join('domain_editor', 'de', 'u.uid = de.uid');
$query-&gt;join($table, $alias, $condistion);


The fields to select:

$query-&gt;fields('u', array('name'))
$query-&gt;fields($table, array $fields)


And the conditions:

  -&gt;condition('u.name', '%' . db_like('john') . '%', 'LIKE')
  -&gt;condition($field, $value, $operator)


In your code it seems you did not take the table aliases into account. So you might want to try something like:

function mymodule_search_query_search_node_alter(QueryAlterableInterface &amp;$query) {
    $u_alias = $query-&gt;join('field_data_field_date', 'fd', 'search.date = fd.field_date_value'); // No idea what the field is called, assuming 'search.date'.
    $query-&gt;fields('fd', array('field_date_value2'));
}


(You'll need to figure out what the name is of the field you want to join with, and substitute 'search.date' with that value.)