Rewriting a date hierarchy into a ‘yyyy-mm-dd’ slug

Internal rewrite rules have to point to index.php and set the proper query vars for WordPress to be able to load the requested object:

add_rewrite_rule(
    'magazine/(\d{4})/(\d{2})/(\d{2})/?',
    'index.php?issue=$matches[1]-$matches[2]-$matches[3]',
    'top'
);

That should get incoming requests to resolve correctly, however, that’s only half the task. If you call the_permalink for your posts, you’ll still get the format you defined when you registered your post type. To fix that you have to filter post_type_link to output the URLs in the correct format.