So here is a quick solution – with a bit of searching over SO and query analyzing : Keep the main query, but add a special filter for ordering.
The filter (in function.php) :
function my_posts_orderby( $orderby ) {
$orderby = 'DATE(wp_posts.post_date) DESC, wp_postmeta.meta_value DESC';
return $orderby;
}
Note the DATE() mysql function that takes the date out of the full time field.
And then, before the loop, run the query thus :
<?php add_filter( 'posts_orderby', 'my_posts_orderby' ); ?>
<?php $the_query = new WP_Query( array( 'meta_key' => '_my_meta_field' ) ); ?>
Wich means, call the filter, and then create a query that includes the custom meta field so that it can be sorted.
Then, after the loop, don’t forget to call
<?php remove_filter( 'posts_orderby', 'posts_orderby' ); ?>
failling that no other query will ever work (including displaying a single post)
And that works.