Why the custom post type links don’t work if not login?

I would recommend downloading the excellent Advanced Custom Fields plugin and using that. It will let you easily create a field to accept a date and it uses a date picker to ensure you are getting the proper format stored.

Then, in your code, all you have to do is this:
echo get_field('event_date'); … assuming you named your field event_date.

There is a lot more you can do with the plugin, but it would definitely help you in this case.