Views Different Sort Orders
I'm pretty sure this can't be done in the standard Views UI.

A bad solution would be to use the Views PHP module to programmatically alter the order of the view results, or perhaps the Views Raw SQL module to insert some sorting statements into the SQL, although I haven't ever tried that.

A good solution would be to implement hook_views_query_alter() in your own custom module and add your custom sorting order to the SQL query.

Going by this answer I think something like this might work, although I haven't tested it:

function mymodule_views_query_alter(&amp;$view, &amp;$query) {
  if ($view-&gt;name == 'my_view') {
    $query-&gt;orderby = array(
      0 =&gt; array(
        'field' =&gt; 'my_date_field &lt; CURDATE()',
        'direction' =&gt; 'ASC',
      ),
      1 =&gt; array(
        'field' =&gt; 'greatest(my_date_field, CURDATE())',
        'direction' =&gt; 'ASC',
      ),
      2 =&gt; array(
        'field' =&gt; 'least(my_date_field, CURDATE())',
        'direction' =&gt; 'DESC',
      ),
    );
  }
}


You would obviously have to substitute in the names of your view and your date field.

Note that this code overwrites any sorting already defined by the view. You could of course add to the $query-&gt;orderby array rather than replacing it.