I believe your problem is that you are not casting the variables over into integers. You should give this a try:
$query->set('date_query', array(
array(
'year' => (int)$dies['year'],
'month' => (int)$dies['mon'],
'day' => (int)$dies['mday'],
),
));
or if you would like, before you even set up the arguments for the query, you could do something along the lines of:
$anyet = intval( $dies['year'] );
The query value is supposed to be an integer for the day, year, month keys. So most likely since you are getting query vars from the url, which are strings, if that is the only thing changed from the staticly built working query to the dynamically built query, then I believe you should be good if you cast those strings into integers using (int) or intval(). Here is an excellent resource on query string arguments by Bill Erickson, I use it often, has saved me many times.