Disable alarms for all day events in google calendar When I have an all-day event in my calendar (a friend's birthday perhaps) I find that my phone will notify me to the start of the event at 11:50pm the previous day and every few minutes after that.

Generally I don't need a notification for all day events, but find notifications for events with a specific time to be useful.

Is there a way to disable notifications for all-day events?

Or is there a way to disable calendar notifications between say 11pm and 8am (I'd be happy if the alerts sounded after I woke up) but I imagine that's harder to set up.
I suspect that the events for which you get notifications have a reminder set in them. So the easiest way to get rid of the notifications is to turn off the reminders in the events themselves. Typically, you would not have a reminder in the birthday event but if the event came from somewhere else (like Outlook or other phone) then the reminder might get added to it. I had this problem on some phones...
however, it could be very tedious to remove reminders individually if you have many events with unwanted reminders. 

The second part of the question: I'd use Tasker app for that. However, you have to pay for it. I am aware of a free automation app AutomateIt (sorry can't add a link because I don't have enough rep here) and from description it looks like it can also kill sound based on a rule but I have not used it myself so will not comment. 
For Tasker there are instructions on how to implement "Sleep mode" with which the phone with "shut up" at night. If you go down this path I can assist more since I have set this up on my phone and it works quite well.