Adjust search system - return all nodes, but exclude a specific node type if a field is less than current date
I think you need a different kind of SQL Join there, your (inner) join will produce a result set of only nodes that have an respective entry in the field_data_field_date table.  

I would try a left outer join and add an OR condition for field_date_value2 being NULL. An example:

$u_alias = $query-&gt;leftJoin('field_data_field_date', 'fd', 'n.nid = fd.entity_id'); 
$query-&gt;fields('fd', array('field_date_value2'));
$db_or = db_or();
$db_or-&gt;condition("{fd}.field_date_value2", '2016-03-08T21:30:00', '&gt;=');
$db_or-&gt;isNull("{fd}.field_date_value2");
$query-&gt;condition($db_or);


Cheers!